如果使用一元+/ -运算符来执行转换作为Number()转换函数,那么为什么我们需要一元运算符?这些一元运营商的特殊需求是什么?
我只是阅读了底层源代码,并且无法从这段代码中获得观点:
_.each = _.forEach = function(obj, iterator, context) {
if (obj == null) return obj;
iterator = createCallback(iterator, context);
var i, length = obj.length;
if (length === +length) { // why +length?
for (i = 0; i < length; i++) {
iterator(obj[i], i, obj);
}
} else {
var keys = _.keys(obj);
for (i = 0, length = keys.length; i < length; i++) {
iterator(obj[keys[i]], keys[i], obj);
}
}
return obj;
};
Run Code Online (Sandbox Code Playgroud)
为什么长度=== +长度?如果长度不是数字,我想这用于强制转换?有人可以帮我一把吗?
阅读underscore.js我的源代码,偶然发现了以下几行:
... if (obj.length === +obj.length) { ...
Run Code Online (Sandbox Code Playgroud)
这对我来说有点混乱.这里的实际比较是什么?我相信它有关于检测本机数组的一些事情,但无法弄清楚实际发生了什么.怎么+办?为什么用===而不是==?这种风格的性能优势是什么?
在这些情况下,plus运算符的应用是什么?我已经看到它以这些方式使用,但看不到它是如何运作的.
start = +new Date;
+array[i]
+f.call(array, array[i], i)
x = +y
Run Code Online (Sandbox Code Playgroud)