在查阅asm.js文档时,我发现了这个奇怪的片段(对于我来说至少是新的JS),它出现在所有示例代码中:
function test(x) {
x = +x; // THIS
...
return +(x*y);
}
第一行中的加号
+
有什么作用?在查阅asm.js文档时,我发现了这个奇怪的片段(对于我来说至少是新的JS),它出现在所有示例代码中:
function test(x) {
x = +x; // THIS
...
return +(x*y);
}
+
有什么作用?它简单地用于将一个值与另一种类型转换为数字。此外,如果该符号后的值无法转换为数字,则会返回NaN。
来自书籍Javascript和Jquery - 缺失手册
var numOfShoes = '2';
var numOfSocks = 4;
var totalItems = +numOfShoes + numOfSocks;
var numOfShoes = '2';
var numOfSocks = 4;
var totalItems = Number(numOfShoes) + numOfSocks;
Number()函数可以将字符串转换为数字(如果可能的话)。如果字符串只包含字母而不是数字,则会返回NaN值,表示无法将字母转换为数字。
int
和double
的强制转换是如何不同的。 - adrianpparseFloat
(用于“浮点数”)和parseInt
(用于“整数”)。使用+
将其转换为一个Number
。因此,如果它看起来像是“int”,它将被转换为“int”。如果它看起来像是“float”,它将被转换为“double”。 - Ian
typeof '3'
=> "字符串"typeof +'3'
=> "数字" - dfsqreturn +(x*y);
中的+
是多余的。 - Ian*
强制它们执行计算,因此()
的结果是NaN
或Number
。在这个新例子中,只要sqrt
的结果是一个Number
,那么它仍然是多余的。如果sqrt
产生(或可以产生)一个String
,那么在这种情况下使用+
进行转换是“必要的”。 - Ian|0
。 - John Dvorak