[英]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.