Voy a optimizar el código javascript en el que vi el código antiguo como se muestra a continuación,
var emcont = $('#emcont').val(); numericMatch = emcont.match(/\d/g); if (numericMatch == null) { isValid = false; $('#msg_emcont').html(getMessage('msg_emcont')).show(); } else if (emcont.length != 14) { isValid = false; $('#msg_emcont').html(getMessage('msg_emcont')).show(); } else if (numericMatch.length && numericMatch.length != 10) { isValid = false; $('#msg_emcont').html(getMessage('msg_emcont')).show(); } else { $('#msg_emcont').html('').hide(); } Voy a convertir las condiciones if-else en condiciones de cambio, pero el problema en el código anterior es que la validación de la segunda condición usó la variable emcont , por lo que no puedo usar directamente numericMatch en la instrucción de switch . Así que decidí usar la variable emcont directamente en la declaración de switch como el siguiente código,
switch(emcont) { case emcont.match(/\d/g) == null: isValid = false; $('#msg_emcont').html(getMessage('msg_emcont')).show(); break; case emcont.length != 14: isValid = false; $('#msg_emcont').html(getMessage('msg_emcont')).show(); break; case emcont.match(/\d/g).length && emcont.match(/\d/g).length != 10: isValid = false; $('#msg_emcont').html(getMessage('msg_emcont')).show(); break; default: $('#msg_emcont').html('').hide(); break; }En expresiones regulares usadas en la validación de casos de cambio, por lo que necesito saber qué código es mejor en cuanto a rendimiento.
No abuse de los efectos secundarios del switch(true) , que es lo que quiso decir
Esto es SECO y más fácil de leer.
var emcont = $('#emcont').val(); const numericMatch = emcont.match(/\d/g); $('#msg_emcont') .html(getMessage('msg_emcont')) .toggle( numericMatch == null || emcont.length != 14 || (numericMatch.length && numericMatch.length != 10) )Incluso podría considerar mudarse
$('#msg_emcont').html(getMessage('msg_emcont'))a la carga de la página por lo que solo se hace una vez