我在尝试将自定义for
in
循环切换为underscore
或lodash
循环时发现了一些奇怪的内容。
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);
});
我有什么理由不使用任何一个库中的_.each
来循环localStorage
吗?
答案 0 :(得分:4)
这是一个无法解决的已知问题。您可以找到the bug report on GitHub。
潜在的问题似乎是强调_.each()
并不能很好地处理具有length
属性的对象。
错误报告的官方回复:
最后的决定是你应该自己迭代
localStorage
,而不是依赖_.each
。