1

用語は何[0] == ![0]を意味しますか?彼らは戻りますが、[0]のタイプがオブジェクトであり、![0]がブール値をtrue返すため、どのように戻るかを説明する必要がありますか? trueでは、それらはどのように等しいのでしょうか? ありがとう

4

3 に答える 3

8

![0]falseすべての非nullオブジェクトが にキャストされるため、は単にtrueです。

と を比較する[0]false、数値に変換されます - 理由は聞かないでください。[0]は最初に文字列に変換され(配列は区切り文字"0"でエントリを連結することによって文字列にキャストされます)、次に数値です。は数値にキャストされ、次のようになります:は と同等であり、これは真です。,0false0[0] == ![0]0 == 0

于 2013-01-29T20:37:27.630 に答える
7

これを理解するには、![0]まず式を見てください。(JS の任意のオブジェクトとして) は真の値であるfalseと評価されます。[0]したがって、ステートメントは次のようになります...

[0] == false

簡単になりました: (Boolean -> Number ルールの場合) にfalse変換され、Object-To-Primitive ルールによって変換されます - 最初に(String) に、次に(Number) に変換されます。明らかに、等しいです。)0[0]'0'00 0

PSそして、はい、それはかなり奇妙に思えるかもしれませんが、両方...

[0] == false

... と ...

![0] == false

... に評価true: 前者はすでに説明されていますが、後者は単にfalse == falseです。==これらのLint 警告にまだ驚いている人はいますか? )

于 2013-01-29T20:34:56.943 に答える
0

式を複数の部分に分割しました:

typeof([0]) // "object"
[0] == true // false
![0] == true // false
![0] == false // true

この理由は、JavaScript では値のみ1が暗黙的に true に変換されるため、他のすべての値は false に変換されるためです。のみが偽の![0]式を否定するため、 になり(false == false) == trueます。

于 2013-01-29T20:38:49.823 に答える