1

これらのステートメントが true と評価される理由はありますか?

0 == [0];
1 == [1];
5 == [5];
5000 == [5000];
1000000 == [1000000];

基本的に、任意の数値は配列にラップされたものと等しいのですか? これの背後にあるロジックは何ですか?

4

4 に答える 4

6

これは、この場合、厳密ではない等値演算子が両方のオペランドを文字列に強制し、配列の文字列表現が含まれる要素をコンマで区切ったものであるためです。

>>> [1, 5].toString()
"1,5"

質問の配列には要素が 1 つしか含まれていないため、文字列表現は要素の表現と同じです。

>>> [5000].toString()
"5000"
于 2012-05-31T09:11:05.050 に答える
1

[0]要素が「0」の配列です。したがって0 == [0]、次のことと同じです。

0 == myArray(0)別の言語で。この場合myArray(0) returns the value at the index 0は 0 になります。

これが、JavaScript 配列に関する私の理解です。私が間違っていたら、他の誰かが飛び込んで私を訂正したいと思うかもしれません。

于 2012-05-31T09:12:15.283 に答える
1

== は変数の型を比較せず、=== は変数の型を比較す​​るため、次のようになります。

0 == [0]  //true
0 === [0] // false

同じ場合:

0 == '0'  //true
0 === '0' //false
于 2012-05-31T09:15:47.913 に答える
0

この背後にある理由の 1 つは、使用されている演算子が "==" であることです。これは値のみを比較し、1=="1" のようにデータ型は比較しません。

于 2012-05-31T09:11:49.173 に答える