2016-07-07 105 views
1

當我試圖將自定義的forin循環切換到underscorelodash循環時,我發現有些奇怪。Lodash&Underscore「each」over localStorage給出了意想不到的結果

JSBIN:http://jsbin.com/manerotoru/2/edit?html,js,console

window.localStorage.setItem("hello", "world") 

console.log('-----underscore-----') 

_.each(window.localStorage, function (value, key) { 
    console.log(value); 
    console.log(key); 
}); 


console.log('-----custom-----') 

function each (object, callback) { 
    for (var key in object) { 
    var value = object[key]; 
    callback(value, key); 
    } 
} 

each(window.localStorage, function (value, key) {    
    console.log(value); 
    console.log(key); 
}); 

這裏是什麼身份登錄到控制檯。

-----lodash----- 
undefined 
0 
-----custom----- 
world 
hello 

並不是說_.each不循環對象,因爲它在這裏做得很好。

var data = {"hello": "world"} 

_.each(data, function (value, key) { 
    console.log(value); 
    console.log(key); 
}); 

是否有任何理由爲什麼我不能在localStorage使用_.each從任一庫循環?

回答

4

這是一個已知的問題,不會被修復。你可以找到the bug report on GitHub

潛在的問題似乎是下劃線的​​不能很好地應對具有length屬性的對象。從bug報告

官方迴應:

最後的決定是,你應該自己迭代localStorage,而不是依靠_.each

相關問題