On voit souvent des exemples comme celui-ci :
var a;
var b=!!a
a est par défaut indéfini. !a est vrai, !!a est faux, donc la valeur de b est fausse, pas indéfinie ou d'autres valeurs, principalement pour faciliter les jugements ultérieurs.
!! Généralement utilisé pour forcer l'expression suivante à des données de type booléen (booléen), c'est-à-dire qu'elle ne peut être que vraie ou fausse
Parce que JavaScript est un langage faiblement typé (les variables ne sont pas des données fixes ; type), il est donc parfois nécessaire de le convertir en type correspondant, similaire à :
a=parseInt(“1234″)
a=”1234″-0 //Convertir en nombre
b=1234 ”” //Convertir en chaîne
c= someObject.toString() //Convertir l'objet en chaîne
Les premier et quatrième types sont des conversions explicites, et les deuxième et troisième types sont des conversions implicites
Conversion booléenne, la Les règles de la convention JavaScript sont
faux, indéfini, nul, 0, "" est faux
vrai, 1, "somestring", [Object] est vrai
pour nul et indéfini, etc. . Pour les autres valeurs implicitement converties, l'utilisation de l'opérateur ! produira un résultat vrai, donc le but de l'utilisation de deux points d'exclamation est de convertir ces valeurs en valeurs booléennes "équivalentes"
Regardons à nouveau :
var foo
alert(!foo) ;// Dans le cas non défini, un point d'exclamation renvoie true;
alert(!goo);//Dans le cas nul, un point d'exclamation renvoie également true;
var o={flag:true}; 🎜>var test =!!o.flag;//Équivalent à var test=o.flag||false;
alert(test);
Cet exemple montre quand undiffed et null , l'utilisation d'un point d'exclamation renverra vrai, l'utilisation de deux points d'exclamation renverra faux, donc le rôle de deux points d'exclamation est que si la valeur de la variable est explicitement définie (pas null/undified/0/"" et d'autres valeurs), le résultat Il sera renvoyé en fonction de la valeur réelle de la variable. S'il n'est pas défini, le résultat sera faux.