En JavaScript, false, 0 et autres formes de nombres, etc. Zéro ("-0", "+0", "0.0" et "0x0"), null, non défini, NaN, "document.all", " []", "{}", """" (chaîne vide) et d'autres valeurs sont toutes de fausses valeurs.
L'environnement d'exploitation de ce tutoriel : système Windows 7, JavaScript version 1.8.5, ordinateur Dell G3.
Fausses valeurs en JavaScript
false
0
et d'autres formes de nombres comme zéro -0
, +0
, 0.0
et 0x0
(créditer RBT pour la forme hexadécimale) document.all (uniquement dans les navigateurs HTML) C'est bizarre. document.all
est un faux objet avec typeof
comme undefined
. Il s'agissait d'une fonctionnalité exclusive à Microsoft dans IE avant IE11 et a été ajoutée à la spécification HTML en tant que "violation délibérée de la spécification JavaScript" afin que les sites Web écrits pour IE ne cassent pas document.all.something en essayant d'y accéder. C'est faux car c'était if (document.all)
un moyen populaire de détecter IE avant les commentaires conditionnels. Voir Pourquoi document.all
Faux ? Détails
"Falsey" signifie simplement le retour de fonction ToBoolean
interne de JavaScript. false
sous-jacent ToBoolean
: … ; et si (valeur). Voici sa spécification officielle (version de travail 2018) (le seul changement depuis la première spécification ECMAscript en 1997 est l'ajout des symboles d'ES6, qui ont toujours été vrais) : !value,value ? ...
comparaison avec == (égalité lâche)
Il convient de parler de la comparaison lâche de valeurs fausses avec, qui utilise ==
et peut La confusion survient en raison de différences potentielles. Ils sont effectivement répartis en trois catégories : ToNumber()
false, 0, -0, "", ''
==
false == ""
donc '' == 0
; 4/2 - 2 == 'some string'.slice(11)
revient null, undefined
==
NaN ne correspond à rien avec ull == undefined
par exemple undefined != false
, typeof null
, 'object',null
document.all
==
. ===
NaN != NaN
C'est l'une des raisons pour lesquelles de nombreux développeurs et de nombreux guides de style (comme standardjs) préfèrent NaN !== NaN
et n'utilisent presque jamais NaN !
. false
NaN != null
===
false === false
retour de fonction interne de JavaScript ===
. Les bizarreries de l'application Javascript à savoir (et une autre bonne raison de préférer ==
à
renvoie vrai), mais aussi . Vous pourriez penser que ceci est une possibilité logique qui ne peut pas se produire, mais pour les cas suivants, cela sera possible :
ToBoolean
true
et ===
- ce sont des chaînes non vides, ce qui est correct, mais Javascript correspondra = = nombres avec des chaînes équivalentes (par exemple ==
). Parce que ToBoolean
, si == false
,
if (value && value == false) alert('Huh?')
"0"
'0'
42 == "42"
; - objet avec une valeur numérique égale à 0 0 == false
"0" == 0
Toute construction similaire vous donnera une fausse valeur, enveloppée dans un type réel "0" == false
new Number(0)
et new Boolean(false)
(merci à cloudfeet pour le lien de la table d'égalité JavaScript) which == false
0 .toExponential()
[]
Ce ne sont que des valeurs que certaines personnes pourraient penser être fausses, mais qui sont en réalité réelles. [[]]
-1
et tous les nombres négatifs non nuls ' '
, " "
, "false"
, 'null'
… toutes les chaînes non vides, y compris uniquement les chaînes d'espace n'importe quoi de typeof, renvoie toujours une chaîne non vide, par exemple :
typeof null
'object'
typeof undefined
'undefined'
document.all
ou
et {}
[]
toute créée avec function(){}
) Contenu () => {}
Error
et Error
retourne new
【Apprentissage recommandé : new Number(0)
Tutoriel avancé javascriptnew Boolean(false)
】Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!