通过asm.js文档,我在整个示例代码中观察到了这个奇怪的(至少对我来说,对 JS 来说很新)片段:
function test(x) {
x = +x; // THIS
...
return +(x*y);
}
+
第一行的目的是什么?
通过asm.js文档,我在整个示例代码中观察到了这个奇怪的(至少对我来说,对 JS 来说很新)片段:
function test(x) {
x = +x; // THIS
...
return +(x*y);
}
+
第一行的目的是什么?
它只是用于casting
具有另一种类型的值来编号。此外,NaN
如果该+
符号之后的值无法转换为number
.
来自 Javascript and Jquery - The Missing Maunal 一书
var numOfShoes = '2';
var numOfSocks = 4;
var totalItems = +numOfShoes + numOfSocks;
在变量前添加一个 + 号(确保两者之间没有空格)告诉 JavaScript 解释器尝试将字符串转换为数字值——如果字符串只包含像“2”这样的数字,你最终会得到字符串转换为数字。在此示例中,您最终得到 6 (2 + 4)。另一种技术是使用 Number() 命令,如下所示:
var numOfShoes = '2';
var numOfSocks = 4;
var totalItems = Number(numOfShoes) + numOfSocks;
如果可能,Number() 将字符串转换为数字。(如果字符串只是字母而不是数字,你会得到 NaN 值来表明你不能把字母变成数字。)
也许我读错了,但从规范http://asmjs.org/spec/latest/#parameter-type-annotations
那是把它当作双重的吗?