偶尔在JQuery源码中看到下面的方法:
merge: function( first, second ) {
var len = +second.length,
j = 0,
i = first.length;
for ( ; j < len; j++ ) {
first[ i++ ] = second[ j ];
}
first.length = i;
return first;
}
其中var len = +second.length; 这里的+号起什么作用呢?
我知道如果var date = +new Date(),date会是一个long值,而不是Date对象。但为什么会这样,也不是很清楚。
求大牛解析!!!
字符串转数字。但是为什么length需要转换。。。
+
确实就是把后面的内容转成 number
类型。
但是这里为什么这么写我也觉得很奇怪,因为首先也没有什么常见的对象会有 length
属性但不是 number
类型的。
其次就算前面不转成 number
类型,后面唯一用到 len
的 <
运算符也会自动做类型转换。看上去之后每次 <
时都去转换类型比之前只转换一次的性能要低下,但实际上现代 JavaScript 引擎没有那么笨。
结论:毫无必要。