7

通过asm.js文档,我在整个示例代码中观察到了这个奇怪的(至少对我来说,对 JS 来说很新)片段:

function test(x) {
    x = +x; // THIS
    ...
    return +(x*y);
}

+第一行的目的是什么?

4

2 回答 2

5

它只是用于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 值来表明你不能把字母变成数字。)

于 2013-04-08T06:27:59.657 回答
3

也许我读错了,但从规范http://asmjs.org/spec/latest/#parameter-type-annotations

那是把它当作双重的吗?

于 2013-04-08T06:29:58.423 回答