Operadores de relación ECMAScript
- Página anterior Operadores aditivos
- Página siguiente Operadores de igualdad
Los operadores de relación realizan operaciones de comparación. Cada operador de relación devuelve un valor Booleano.
Forma de comparación convencional
Los operadores de relación menor, mayor, menor o igual y mayor o igual realizan operaciones de comparación de dos números, de la misma manera que las operaciones de comparación aritmética.
Cada operador de relación devuelve un valor Booleano:
var bResult1 = 2 > 1 //true var bResult2 = 2 < 1 //false
Sin embargo, el comportamiento de aplicar operadores de relación a dos cadenas es diferente. Muchas personas creen que "menor" significa "más adelante en el orden alfabético" y "mayor" significa "más atrás en el orden alfabético", pero eso no es cierto. Para las cadenas, se realiza una comparación numérica del código de caracteres de cada carácter de la primera cadena con el código de caracteres del carácter en la posición correspondiente de la segunda cadena. Después de completar esta operación de comparación, se devuelve un valor Booleano. El problema es que los códigos de caracteres de las letras mayúsculas son menores que los códigos de caracteres de las letras minúsculas, lo que significa que podría ocurrir la siguiente situación:
var bResult = "Blue" < "alpha"; alert(bResult); //salida true
En el ejemplo anterior, la cadena "Blue" es menor que "alpha", porque el código de caracteres de la letra B es 66 y el código de caracteres de la letra a es 97. Para obtener un resultado de comparación de orden alfabético real obligatorio, debe convertir los dos números a la misma forma de escritura (todo mayúsculas o todo minúsculas) y luego compararlos:
var bResult = "Blue".toLowerCase() < "alpha".toLowerCase(); alert(bResult); //Salida false
Convertir a minúsculas a ambos operandos asegura que se reconozca correctamente que "alpha" está antes de "Blue" en el orden alfabético.
Comparar números y cadenas
Otra situación complicada ocurre al comparar dos números en forma de cadena, como:
var bResult = "25" < "3"; alert(bResult); //Salida "true"
Este código compara la cadena "25" con "3". Ambos operandos son cadenas, por lo que se compara el código de caracteres (el código de "2" es 50, el código de "3" es 51).
Pero, si uno de los operandos se convierte en un número, el resultado es interesante:
var bResult = "25" < 3; alert(bResult); //Salida "false"
Aquí, la cadena "25" se convierte en el número 25 y luego se compara con el número 3, como se esperaba.
Cada vez que se compara un número con una cadena, ECMAScript convierte la cadena en un número y luego las compara en orden numérico.
Pero, ¿qué pasa si la cadena no se puede convertir en un número? Considera el siguiente ejemplo:
var bResult = "a" < 3; alert(bResult);
¿Puedes predecir qué saldrá este código? La letra "a" no se puede convertir en un número significativo. Sin embargo, si se llama al método parseInt(), el valor devuelto es NaN. Según las reglas, cualquier operador de relación que contenga NaN debe devolver false, por lo que este código también devuelve false:
var bResult = "a" >= 3; alert(bResult);
Generalmente, si los dos valores de una operación menor que devuelven false, entonces la operación mayor o igual debe devolver true, pero si algún número es NaN, la situación no es así.
- Página anterior Operadores aditivos
- Página siguiente Operadores de igualdad