1. 程式人生 > >for-in

for-in

們的 下標 func 可能 image arr http 是否 不能

先看一個例子:

 Array.prototype.searchItem = function(value){//函數已被簡化
        return right;
    }
    var a = [1, 2, 3, 4];
    for(var i in a){
        console.log(a[i]);
    }

前幾天說個,for-in的一個坑,就是,其下標i是字符串型,不能簡單的做加減運算,還有,當退出循環時,下標i不會像普通的for(i;;)一樣,出現越界,所以不能指望用 i==arr.length 來判斷for-in 是否完整執行完畢。

今天再說一個,就是上面的例子,結果可能並不像想象中的那樣,遍歷a,而是:::

技術分享

多了一個函數,這其實也是由for-in能遍歷對象的關系,造成的,畢竟函數也是對象嘛。

所以,用for...in...在通常情況下確實可以正確運行,但是如果我們的代碼時放到別人的環境中也想跑,那請不要使用for...in...來循環數組。並且這種錯誤往往真的很隱蔽。

for-in