+ obj.length在Underscore.js的每种方法中意味着什么?

时间:2013-05-02 21:46:31

标签: javascript underscore.js

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

我理解严格等于(===),但我不明白+obj.length的含义。

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

这是a link to the code,这是完整的方法:

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

1 个答案:

答案 0 :(得分:1)

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