在尝试将自定义 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
?
最佳答案
这是一个已知问题,不会被修复。你可以找到the bug report on GitHub .
潜在的问题似乎是下划线的 _.each()
不能很好地处理具有 length
属性的对象。
错误报告的官方回应:
The final decision is that you should iterate
localStorage
yourself, and not rely on_.each
.
关于javascript - Lodash & Underscore "each"over localStorage 给出了意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38247932/