簡體   English   中英

數組中的javascript for-in循環

[英]javascript for-in loop in an Array

如果代碼是這樣的:

arr=Array("a","b","c");
for(i in arr);
{
 alert(i);
}

沒有任何警報,但是如果是這樣:

arr=new Array("a","b","c");
for(i in arr)
{
 alert(i);//alerts 0,1,2
}

是什么原因?

Array是一個構造函數。 要創建一個新對象,您應該使用new運算符創建該對象,然后將該構造函數綁定到該對象並對其運行。 但是,在這種情況下,它實際上應該以任何一種方式起作用,如注釋中所述,您的問題很可能與for循環旁的分號有關。

順便說一句,為創建新數組,通常建議使用更簡單的表示法

var arr = ["a","b","c"];

將for-in循環與javascript中的數組一起使用也是可疑的,因為這會影響數組上定義的任何其他屬性。 (因此,如果您說arr.x = 2它也會在x進行迭代。

最好使用迭代形式

var i =0, length =arr.length;
for ( ;i<length; i++) {

    alert(arr[i]);
}

得到不同結果的原因是for / in循環使用了錯誤的語法。

for(i in arr);
{
 alert(i);
}

不應該有第一個分號。

還請注意,迭代數組的更好方法是:

arr.forEach(function(value, index){
    alert(value); // or alert(index);
});

正如bfavaretto所提到的。

不使用new關鍵字調用Array函數將以與使用new關鍵字相同的方式創建並返回一個新的Array對象。

因此,這兩個將提醒相同的事情:

arr1 = new Array("a","b","c");
arr2 = Array("a","b","c");

暫無
暫無

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

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