我一直在寻找的Underscore.js库的源代码,专门为map方法(围绕页面上线85,并在这里复制):负面对象的长度可能在JavaScript或underscore.js中?含义?
_.map = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
each(obj, function(value, index, list) {
results[results.length] = iterator.call(context, value, index, list);
});
if (obj.length === +obj.length) results.length = obj.length;
return results;
};
完全明了,除了以下行
if (obj.length === +obj.length) results.length = obj.length;
现在,我读这意味着“如果对象长度不是负数...”
哪,如果我的解释是正确的,暗示它可能是!
所以,亲爱的专家,对于什么样的物体,否则会
obj.length === +obj.length
是false
?我对===
的理解意味着如果obj.length
的类型与+obj.length
的类型不匹配,它可能会返回false
,但这里我的知识不足。 +
对obj.length
可能是什么种类的东西可以做什么?是x === +x
某种我不知道的通用惯用测试?是否对underscore.js中出现的某种特殊情况作出了回应,例如,为了某些常规目的,下划线.js是否指定并跟踪负对象长度?指导和意见将不胜感激。
请注意,'+ x' *不一定是正数 - 它只是'x'的数值。所以如果'var x = -10','+ x'也是'-10'。 – 2012-01-11 00:42:23
是的,认识到+ x对x的值没有做任何事情(没有为了比较暂时增加它)。 – grantwparks 2012-03-31 22:38:07