1

我正在尝试阅读 underscore.js。我正在通过var each = _.each = _.forEach方法。

我理解严格等于(===),但我不明白是什么+obj.length意思。

else if (obj.length === +obj.length)

这是代码的链接,这是完整的方法:

var each = _.each = _.forEach = function(obj, iterator, context) {
    if (obj == null) return;
    if (nativeForEach && obj.forEach === nativeForEach) {
      obj.forEach(iterator, context);
    } else if (obj.length === +obj.length) {
      for (var i = 0, l = obj.length; i < l; i++) {
        if (iterator.call(context, obj[i], i, obj) === breaker) return;
      }
    } else {
      for (var key in obj) {
        if (_.has(obj, key)) {
          if (iterator.call(context, obj[key], key, obj) === breaker) return;
        }
      }
    }
  };
4

1 回答 1

1

这是一个一元 + 运算符。它将其参数转换为数字。基本上该行检查是否obj.length是一个数字。

于 2013-05-02T21:51:50.233 回答