Lodash & Underscore "each" 在 localStorage 上给出了意想不到的结果
Lodash & Underscore "each" over localStorage gives unexpected results
我在尝试将自定义 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
.
我在尝试将自定义 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
.