我一直在尋找的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