¡! Generalmente se usa para lanzar la siguiente expresión en datos booleanos (booleanos), es decir, solo puede ser verdadero o falso;
A menudo veo ejemplos como este:
La copia del código es la siguiente:
var a;
var b = !! a;
A está indefinido por defecto. !a is true, !!a is false, so the value of b is false, no longer undefined, nor other values, which mainly provides convenience for subsequent judgment.
¡! Generalmente se usa para lanzar la siguiente expresión en datos booleanos (booleanos), es decir, solo puede ser verdadero o falso;
Debido a que JavaScript es un lenguaje de tipo débil (las variables no tienen tipos de datos fijos), a veces se debe lanzar al tipo correspondiente, como:
a = parseInt ("1234") a = "1234" -0 // Convertir al número B = 1234+"// Convertir a String C = SomeObject.ToString () // Convertir el objeto en cadenaEntre ellos, el primero y el cuarto son conversiones explícitas, y las 2 y 3 son conversiones implícitas
Conversión booleana, las reglas de la convención de JavaScript son
falso, indefinido, nulo, 0, "" es falso
verdadero, 1, "somestring", [objeto] es verdadero
Para otros valores implícitamente convertidos como nulos y indefinidos, el! El operador producirá resultados verdaderos, por lo que el propósito de usar dos marcos de exclamación es convertir estos valores en valores booleanos "equivalentes";
Vamos a echar un vistazo de nuevo:
var foo; alerta (! foo); // sinfinado, un punto de exclamación devuelve verdadero; alerta (! Goo); // En nulo, un punto de exclamación devuelve verdadero; var o = {bandera: true}; Var test = !! O.Flag; // equivalente a var test = o.flag || false; alerta (prueba);Este ejemplo demuestra que cuando no se realiza y nulo, el retorno de un punto de exclamación es verdadero, y el retorno de dos puntos de exclamación es falso, por lo que la función de los dos puntos de exclamación es que si el valor de la variable está claramente establecido (no nulo/indiinente/0/"y" valores equivalentes), el resultado se devolverá en base al valor real de la variable. Si no está configurado, se devolverá el resultado.