これらのステートメントが true と評価される理由はありますか?
0 == [0];
1 == [1];
5 == [5];
5000 == [5000];
1000000 == [1000000];
基本的に、任意の数値は配列にラップされたものと等しいのですか? これの背後にあるロジックは何ですか?
これらのステートメントが true と評価される理由はありますか?
0 == [0];
1 == [1];
5 == [5];
5000 == [5000];
1000000 == [1000000];
基本的に、任意の数値は配列にラップされたものと等しいのですか? これの背後にあるロジックは何ですか?
これは、この場合、厳密ではない等値演算子が両方のオペランドを文字列に強制し、配列の文字列表現が含まれる要素をコンマで区切ったものであるためです。
>>> [1, 5].toString()
"1,5"
質問の配列には要素が 1 つしか含まれていないため、文字列表現は要素の表現と同じです。
>>> [5000].toString()
"5000"
[0]
要素が「0」の配列です。したがって0 == [0]
、次のことと同じです。
0 == myArray(0)
別の言語で。この場合myArray(0) returns the value at the index 0
は 0 になります。
これが、JavaScript 配列に関する私の理解です。私が間違っていたら、他の誰かが飛び込んで私を訂正したいと思うかもしれません。
== は変数の型を比較せず、=== は変数の型を比較するため、次のようになります。
0 == [0] //true
0 === [0] // false
同じ場合:
0 == '0' //true
0 === '0' //false
この背後にある理由の 1 つは、使用されている演算子が "==" であることです。これは値のみを比較し、1=="1" のようにデータ型は比較しません。