我很驚訝地發現兩個數組的比較在JavaScript中返回一個布爾值。比較運算符在javascript中的數組上比較什麼?
var blah = [1,2,3];
var blah2 = [2,3,4,5];
document.write(blah < blah2);
我老老實實期待的NaN,但在每一個瀏覽器我測試我得到了一致的「真」的結果。我找不到比較操作符在JS中使用數組的任何文檔。在這種情況下正在比較什麼?
我很驚訝地發現兩個數組的比較在JavaScript中返回一個布爾值。比較運算符在javascript中的數組上比較什麼?
var blah = [1,2,3];
var blah2 = [2,3,4,5];
document.write(blah < blah2);
我老老實實期待的NaN,但在每一個瀏覽器我測試我得到了一致的「真」的結果。我找不到比較操作符在JS中使用數組的任何文檔。在這種情況下正在比較什麼?
我老老實實期待的NaN
號的比較總是返回一個JavaScript布爾(當它不拋出異常)。
如果任何一個操作數是沒有可比性(如NaN
),它將返回false
。
什麼是在這種情況下進行比較?
abstract relation comparison algorithm將所有參數轉換爲原始值以進行比較。在你的陣列的情況下,這將它們轉換爲字符串,所以你基本上比較
"1,2,3" < "2,3,4,5"
的陣列被強制爲字符串值,這實際上是說'。加入()'被調用,結果是相比較。 – Pointy
您是否期望* NaN *是不及運算符的結果?所以你認爲像* 42這樣的事情是NaN比666 *? –
比較運算符永遠不會返回'NaN',它們總是返回一個布爾值。 'NaN
Barmar