2017-04-05 7 views
1

誤って、配列をjavascriptの数字のように比較できることがわかりました。javascriptの配列と数字を比較する

[3] > 4 
false 
[3] < 4 
true 
[3] > [4] 
false 
[3] < [4] 
true 
[] > 0 
false 
[] < 0 
false 
[] == 0 
true 
[] === 0 
false 
[] < 3 
true 
['3'] == 3 
true 
['3'] < 3 
false 
['3'] < 4 
true 
[3, 4] > [3.5, 2.5] 
false 
[3, 4] > [2.5, 2.5] 
true 

このコンセプトは使用できますか?その後、どの仕様のセクションはそれですか? JavaScriptを

(私はクロームコンソールでそれをテストした。)

+3

大丈夫ですか?はい、構文エラーではなく、特定の規則に従います。しかし、そうするのが賢明なシナリオを考えることはできません。配列が空であるか複数の要素が含まれている場合、または要素が数値でない場合にどうなるかを確認してください... – nnnnnn

+4

なぜそれを使用しますか? – epascarello

+0

最近、インターフェイスが数値から配列に変更されました。互換性のために、私はそれらの両方を許可するだろうが、私はブラウザが同じように動作しないかもしれないことを恐れている。 – hotohoto

答えて

2

Implicit coercionこの場合には仕事です。たとえば、aとbが異なる型のa < bの例では、 '抽象的関係比較'アルゴリズムは...最初に両方の値に対してToPrimitive強制を呼び出し、いずれかの呼び出しの戻り値が文字列でない場合は両方値はToNumber操作規則を使用して数値に強制変換され、数値的に比較されます。

関連する問題