JavaScript では、false、0、およびその他の形式の数値など。ゼロ (「-0」、「0」、「0.0」、「0x0」)、null、未定義、NaN、「document.all」 "、"[]"、"{}"、"""" (空文字列) およびその他の値はすべて false 値です。
このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
JavaScript の false 値
false
0
およびゼロ -0
、 0
、0.0
、0x0
などのその他の形式の数値 (16 進形式のクレジット RBT) 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、未定義
、および ==
ull == 未定義
ですが、未定義です。 != false
typeof null
は 'object' を返しますが、null
はオブジェクトではなく、これは長期的なものであることにも言及する価値があります。互換性を維持するために修正されていないバグ/癖。これは実際のオブジェクトではなく、オブジェクトは実際です (document.all
Javascript が HTML に実装されると「悪意のある違反」が発生します) を使用してください==
または ===
(自分自身ではありません) 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' - これらは空ではない文字列であり、これは正しいですが、Javascript は = =数値の一致を変換します。同等の文字列 (例:
42 == "42")。
0 == false であるため、
"0" == 0 の場合、
"0" == false となります。
および
new Boolean(false) - これらは実際のオブジェクトですが、 == はその値を参照します
どれ == false 。
; - 数値に等しいオブジェクト 0
、
[[]]、および
[0] (JavaScript 等価性テーブルのリンクについては、cloudfeet に感謝します)
いくつかのより正確な値
これらは、一部の人が false であると予想するかもしれない単なる値ですが、実際には true です。-1
およびゼロ以外のすべての負の数' '
," "
,"false "
, 'null'
... スペース文字列のみを含む空でないすべての文字列 typeof からのすべてのものは、常に空ではない文字列を返します。例:
typeof null
(長年のバグ/癖のため、'object'
は文字列を返します)
typeof unknown
(文字列 'unknown'
を返します) 任意のオブジェクト (document.all
"悪意のある違反)ただし、typeof の他の提案にもかかわらず、null は実際にはオブジェクトではないことに注意してください)。含まれるもの:
#{}
または
() => {} (空の関数を含む任意の関数)
および
Error
(
new Number(0) および
new Boolean(false) を含む) 任意のコンテンツ
および
[1] は、相互に比較して
true を返します
==。
JavaScript 上級チュートリアル]
以上がJavaScript で false となる値は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。