ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript で false となる値は何ですか

JavaScript で false となる値は何ですか

青灯夜游
青灯夜游オリジナル
2021-07-19 16:17:102697ブラウズ

JavaScript では、false、0、およびその他の形式の数値など。ゼロ (「-0」、「0」、「0.0」、「0x0」)、null、未定義、NaN、「document.all」 "、"[]"、"{}"、"""" (空文字列) およびその他の値はすべて false 値です。

JavaScript で false となる値は何ですか

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

JavaScript の false 値

  • false
  • 0 およびゼロ -0 00.00x0 などのその他の形式の数値 (16 進形式のクレジット RBT)
    - `""、''、および ``` - 長さ 0 の文字列
  • null
  • 未定義
  • NaN
  • document.all (HTML ブラウザのみ) これは奇妙なものです。 document.all は、typeof未定義である偽のオブジェクトです。これは IE11 より前の IE の Microsoft 独自の機能であり、IE 用に作成された Web サイトがアクセスしようとしたときに document.all.something を破損しないようにするために、「JavaScript 仕様の意図的な違反」として HTML 仕様に追加されました。これは偽です。なぜなら、IE で条件付きコメントの前に if (document.all) を検出する一般的な方法だったからです。 「document.all が false である理由」を参照してください。詳細
    「Falsey」は、単に JavaScript の内部 ToBoolean 関数が false を返すことを意味します。 ToBoolean!value, value? ...: ...; および if (value) の基礎となります。これはその公式仕様 (2018 年ワーキングドラフト) です (1997 年の最初の ECMAscript 仕様以降の唯一の変更は ES6 のシンボルの追加であり、これは常に当てはまります):

  • []

  • {}

  • "" (空の文字列)

== (緩やかな等価性) との比較

# を使用する == との偽の値の緩やかな比較について話す価値があります。 ToNumber() と、潜在的な違いにより混乱が生じる可能性があります。これらは実質的に 3 つのカテゴリに分類されます:

  • false、0、-0、""、'' は互いに一致します==
  • false == "",'' == 0したがって、4/2 - 2 == '何らかの文字列'.slice(11) ;
  • #null、未定義、および ==
  • #たとえば、null == 未定義ですが、未定義です。 != false
  • typeof null'object' を返しますが、null はオブジェクトではなく、これは長期的なものであることにも言及する価値があります。互換性を維持するために修正されていないバグ/癖。これは実際のオブジェクトではなく、オブジェクトは実際です (document.allJavascript が HTML に実装されると「悪意のある違反」が発生します)
  • NaN は何も一致しません。 を使用してください== または === (自分自身ではありません)
    たとえば、NaN != NaN, NaN !== NaN, NaN != false, NaN != null
  • 「厳密な等価性」(===) の場合、そういったグループ分け。 false === false のみ。

これが、多くの開発者や多くのスタイル ガイド (standardjs など) が === を好み、ほとんど使用しない理由の 1 つです ==

真の値 == false

「真実」とは、JavaScript の内部 ToBoolean関数の戻り値 のみを意味します真実###。知っておくべき Javascript アプリケーションの癖 (そして == より === を好むもう 1 つの十分な理由): 値が真実である可能性があります (ToBoolean returns true) )、また == false です。

この

if (value && value == false)alert('Huh?') は論理的に起こり得ない可能性であると考えるかもしれませんが、次の状況では次のようになります。可能性:

  • "0" および '0' - これらは空ではない文字列であり、これは正しいですが、Javascript は = =数値の一致を変換します。同等の文字列 (例: 42 == "42")。 0 == false であるため、"0" == 0 の場合、"0" == false となります。
  • new Number(0) および new Boolean(false) - これらは実際のオブジェクトですが、 == はその値を参照します どれ == false
  • 0 .toExponential(); - 数値に等しいオブジェクト 0
  • 同様の構成では、実数型でラップされた false 値が得られます
  • [][[]]、および [0] (JavaScript 等価性テーブルのリンクについては、cloudfeet に感謝します)

いくつかのより正確な値

これらは、一部の人が false であると予想するかもしれない単なる値ですが、実際には true です。

  • -1 およびゼロ以外のすべての負の数
  • ' '," ","false ", 'null'... スペース文字列のみを含む空でないすべての文字列
  • typeof からのすべてのものは、常に空ではない文字列を返します。例:

  • typeof null (長年のバグ/癖のため、'object' は文字列を返します)

  • typeof unknown (文字列 'unknown' を返します)
  • 任意のオブジェクト (document.all"悪意のある違反)ただし、typeof の他の提案にもかかわらず、null は実際にはオブジェクトではないことに注意してください)。含まれるもの:

  • #{}

  • ##[]
  • function( ) {} または () => {} (空の関数を含む任意の関数)
  • Error および Error
  • new
  • で作成された任意の正規表現
  • (new Number(0) および new Boolean(false) を含む) 任意のコンテンツ
  • 任意のシンボル

  • true、1、"1" および [1] は、相互に比較して true を返します ==
[推奨学習:

JavaScript 上級チュートリアル]

以上がJavaScript で false となる値は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。