Je vois souvent des exemples comme celui-ci:
La copie de code est la suivante:
var a;
var b = !! a;
A n'est pas défini par défaut. ! A est vrai, !! A est faux, donc la valeur de B n'est plus, non défini, ni d'autres valeurs, qui assure principalement la commodité du jugement ultérieur.
!!
Parce que JavaScript est un langage de type faible (les variables n'ont pas de types de données fixes), il doit parfois être jeté au type correspondant, tel que:
La copie de code est la suivante:
a = parseInt ("1234")
a = ”1234 ″ -0 // Convertir en numéro
b = 1234 + ”// Convertir en chaîne
c = someObject.toString () // Convertir l'objet en chaîne
Parmi eux, les premier et quatrième sont des conversions explicites, et 2 et 3 sont des conversions implicites
Conversion booléenne, les règles de la convention JavaScript sont
Faux, indéfinis, nuls, 0, "" est faux
vrai, 1, "somestring", [objet] est vrai
Pour d'autres valeurs implicitement converties telles que Null et non définies, l'opérateur!
Jetons un coup d'œil:
La copie de code est la suivante:
var foo;
alerte (! foo); // Dans un cas non défini, une marque d'exclamation revient vrai;
alerte (! goo); // En cas de nul, le retour d'une marque d'exclamation est également vrai;
var o = {flag: true};
var test = !! o.flag; // équivalent à var test = o.flag || false;
alerte (test);
Cet exemple démontre que lorsqu'il est non défini et nu NULL / UNDIFIDE / 0 / "et" Valeurs équivalentes), le résultat sera renvoyé en fonction de la valeur réelle de la variable.