Quelle valeur est fausse en JavaScript

青灯夜游
Libérer: 2021-07-22 09:52:09
original
2714 Les gens l'ont consulté

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.

Quelle valeur est fausse en JavaScript

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)
    - `"", '' et ``` - chaînes de longueur 0
  • null
  • undefined
  • NaN
  • 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. falsesous-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 ? ...

  • []

  • {}

  • "" (chaîne vide)


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()

  • se correspondent false, 0, -0, "", ''==
  • comme
  • , false == "" donc '' == 0 ; 4/2 - 2 == 'some string'.slice(11) revient
  • n'est pas un objet, c'est un bug/bizarre à long terme qui n'est pas corrigé pour maintenir la compatibilité. Ce n'est pas un objet réel, et les objets sont réels (
  • des "violations malveillantes" se produisent lorsque Javascript est implémenté dans HTML) null, undefined==NaN ne correspond à rien avec
  • ou
  • , pas même à lui-même ull == undefined par exemple undefined != false,
  • ,
  • = typeof null, 'object',null document.all
  • Pour « l'égalité stricte » (
  • ), un tel regroupement n'existe pas. Seulement ==. ===
    NaN != NaNC'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 !. falseNaN != null
  • true value == false===false === false
"Truthy" signifie simplement le

retour de fonction interne de JavaScript ===. Les bizarreries de l'application Javascript à savoir (et une autre bonne raison de préférer == à

) : il est possible qu'une valeur soit véridique (

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 :

ToBooleantrue 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?')

et
    - ce sont de vrais objets, mais == voyez leurs valeurs
  • . "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()
  • Quelques valeurs plus réelles
  • []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 :

    • + Il existe d'autres suggestions de typeof, mais ce n'est pas réellement un objet). Contient :

      typeof null'object'

    • typeof undefined'undefined'
    • document.all ou

      (n'importe quelle fonction, y compris les fonctions vides)
    • et {}

    • toute expression régulière
    • []toute créée avec
    • (y compris
    • et function(){}) Contenu () => {}
    • Tout le symbole
    • Error et Errorretourne
    • se comparent
    • .
    • 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal