var a=true;
console.log(a);//返回true
console.log(typeof a);//返回boolean
console.log(typeof(typeof a));//返回"string"
Essentiellement, le type de a ? 1 : 2 peut s'écrire comme ceci :
"boolean" ? 1:2
Et cette expression ternaire appelle Boolean() pour convertir le type de chaîne, c'est-à-dire : Boolean("boolean") ====>true Donc le retour est 1. Vous pouvez essayer d'attribuer a à false, et la valeur de retour sera toujours 1 :
Cette déclaration est compilée comme ceci (typeof a)? 1 : 2 Une fois compilée, elle a été modifiée sous cette forme, et voici le résultat. Opérateur ternaire
En prenant votre exemple, l'opérateur ternaire, lorsque typeof a est vrai, renvoie 1, et lorsque typeof a est faux, il renvoie 2. Les 100 premiers + a ; ont été convertis en type, donc 100 + a = 101, les résultats renvoient donc également 1
1. Parce que
.typeof
a une priorité plus élevée2 Ou parce que l'opérateur d'addition a une priorité plus élevée
Essentiellement, le type de a ? 1 : 2 peut s'écrire comme ceci :
Et cette expression ternaire appelle Boolean() pour convertir le type de chaîne, c'est-à-dire :
Boolean("boolean") ====>true
Donc le retour est 1.
Vous pouvez essayer d'attribuer a à false, et la valeur de retour sera toujours 1 :
Cette déclaration est compilée comme ceci
(typeof a)? 1 : 2
Une fois compilée, elle a été modifiée sous cette forme, et voici le résultat. Opérateur ternaire
Rien de mal
En prenant votre exemple, l'opérateur
ternaire, lorsque typeof a est vrai, renvoie 1, et lorsque
typeof a est faux, il renvoie 2.
Les 100 premiers + a ; ont été convertis en type, donc 100 + a = 101,
les résultats renvoient donc également 1