簡體   English   中英

為什么空數組上的indexOf不返回-1?

[英]Why does indexOf on an empty array does not return -1?

我試圖檢查數組是否包含給定值:

var arr = [];

if (arr.indexOf(2)) {
    console.log('yes');
}

小提琴

為什么始終滿足if條件,盡管arr不包含值2 不應該返回-1 ,因此不記錄任何內容?

你的病情應該是:

if (arr.indexOf(2) >= 0)

因為在JavaScript中,當合並為布爾值時0false ,而任何其他數字都被認為是true

因此...... -1合並為true

 alert(!!-1) 

如果您在瀏覽器的控制台中運行此代碼,您將看到它確實返回-1。 但是,在JavaScript if語句中,-1是真實的,因此警報將執行。 正如這個優秀的JavaScript相等表中所詳述的那樣,只有很少的值會在if語句中評估為false: false0""nullundefinedNaN

它確實返回-1但Javascript中的-1被認為是“truthy”。

試試這個,看它確實返回-1:

var i = arr.indexOf(2);
console.log(i);

您需要在條件中明確地將非相等性與-1進行比較。

這是你的jsfiddle的更新版本:
http://jsfiddle.net/bmj8y8bj/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM