Necesito verificar si dos cadenas están en el mismo caso. Tengo mi propia solución a este problema, pero encontré esta versión y no puedo entender cómo/por qué funciona:
function sameCase(a, b){ if(a.toUpperCase() === a.toLowerCase() || b.toLowerCase() === b.toUpperCase()){ return -1 }else if(a === a.toLowerCase() && b === b.toLowerCase() || a === a.toUpperCase() && b === b.toUpperCase()){ return 1 }else{ return 0 } } Específicamente esta declaración if :
if(a.toUpperCase() === a.toLowerCase() || b.toLowerCase() === b.toUpperCase()){ return -1}Sé que esta verificación funciona con caracteres numéricos y espacios en blanco, pero no entiendo por qué funciona, ya que no parece tener en cuenta estos elementos.
mi pregunta: ¿por qué esta función funciona contra letras y números e incluso espacios en blanco?
Las no letras no son modificadas por toUpperCase o toLowerCase . Intente imaginar un 9 minúsculo o . Esto se debe a que todas esas funciones reemplazan los caracteres de las letras individuales con sus equivalentes en mayúsculas o minúsculas.
Entonces, ese segmento de código básicamente verifica si la cadena está completamente compuesta de caracteres que no son letras (porque 924 " es lo mismo en mayúsculas o minúsculas, sin embargo, a123 no es lo mismo en mayúsculas y minúsculas y, por lo tanto, fallará if la declaración ).