Lodash & Underscore "each" 在 localStorage 上给出了意想不到的结果

Lodash & Underscore "each" over localStorage gives unexpected results

我在尝试将自定义 for in 循环切换为 underscorelodash 循环时发现了一些奇怪的事情。

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);
});

为什么我不能使用任一库中的 _.each 循环遍历 localStorage

这是一个已知问题,不会被修复。你可以找到 the bug report on GitHub.

潜在的问题似乎是下划线的 _.each() 不能很好地处理具有 length 属性.

的对象

错误报告官方回复:

The final decision is that you should iterate localStorage yourself, and not rely on _.each.