cadena y número booleano
El tipo JavaScript se convertirá al tipo correspondiente de acuerdo con la tarea.
var str = ""; alerta (typeof (str)); // stringstr =; alert (typeof (str)); // numberVar sum = str +; //+programa dos números para agregar alerta (suma); //
Esto es más obvio, y el valor se puede calcular de un vistazo. Pero consulte la siguiente conversión
var sum = "" + ""; alerta (typeof (suma)); // stringalert (suma); // var sum = "" +; alert (typeof (sum)); // stringalert (suma); // var sum = + ""; alerta (typeof (suma)); // stringalert (typeof (suma)); // var div = ""/""; alert (typeof (área)); // NumberAlt (typeof (sub)); // var sub = "" - ""; alerta (typeof (sub)); // numberAlt (sub); // var div = ""/""; alert (typeof (área)); // NumberAlt (typeof (div)); // numonalert (div); //.
Si el tipo de número y el tipo de cadena "+", el número se convertirá directamente en cadena
El "+" anterior es bastante especial. Si es -, *, /; Entonces, ¿en qué tipo se convertirá al final?
var área = "" " * A"; alerta (typeof (área)); // numoralert (área); // nanvar sub = "a" - "; alerta (typeof (sub)); // nansub =" a " -; alert (typeOf (sub)); // nansub =" a " -; alerta (typeOf (sub)); // nanvar div ="/"a" a "a" a " (div)); // nandiv = "a"/; alerta (typeof (div)); // nan
Como se indica arriba -, *, / son la aritmética en número. La cadena y el número no pueden realizar cálculos, por lo que sus valores son nan. Tipo de número.
var a = true; alert (typeof (a)); // booleanvar b = "true"; var ab = a + b; alert (typeof (ab)); // stringalert (ab); // TruetrueeLert (a == b); // falso
booleano y cadena, los tipos booleanos se convierten automáticamente en cadena "verdadera", pero ¿por qué no es igual a B
Echemos un vistazo a este ejemplo:
var c = ""; alerta (typeof (c)); // stringvar d =; alerta (typeof (d)); // numberalert (c == d); // true
El principio de conversión se da aquí: (como referencia)
1. Si un operando es un booleano, conviértalo en un valor numérico antes de comparar la igualdad, falso a 0 y verdadero a 1;
2. Si un operando es una cadena y el otro operador es un valor numérico, entonces la cadena se convierte en un valor numérico antes de comparar la igualdad;
3. Si un operando es un objeto y el otro operando no lo es, entonces se llama al método Valuef () del objeto y el valor de tipo básico obtenido se compara de acuerdo con las reglas anteriores.
Luego, al comparar cuerdas y tipos booleanos, será:
Esta conversión ocurre: Boolean True primero se convierte en el número 1, luego se convierte en cadena "1" y luego se compara. El resultado debe ser falso.
Número nulo y de cadena booleano indefinido
var a = null; alert (typeof (a)); // objectVar b = "hola"; var ab = a + b; alerta (typeof (ab)); // stringalert (ab); // nullhellovar c =; var ac = a * c; alerta (typeof (ac)); // NumberAlt (ac); // if (a) // false {} else {alert ("false");} var u; alert (a == u); //verdaderoDel ejemplo dado, podemos ver:
NULL se convierte automáticamente en la cadena "NULL" en la cadena, que representa el número 0 en número, que es equivalente a falso en el juicio lógico, y es lo mismo que indefinido cuando el valor se expresa. Tenga en cuenta que == en lugar de ===.
Aunque == convierte su tipo de comparación al comparar, su tipo de variable no cambia debido a ==.