这行javascript有什么作用?

时间:2009-03-04 16:31:38

标签: javascript

在查看jslint code conventions时,我看到了这一行:

total = subtotal + (+myInput.value);

第二个'+'的目的是什么?

5 个答案:

答案 0 :(得分:33)

与熟悉的一元减号(-x)相比,一元加号是完整的。然而,它依赖于这里的副作用,将myInput.value转换为Number,如果它是其他的东西,比如String:

alert(1+'2'); // 12
alert(1+(+'2')); // 3

答案 1 :(得分:8)

这称为“一元+运算符”,它可以用作强制变量转换为数字的快速方法,以便可以在数学运算中使用。

答案 2 :(得分:3)

unary + operator将事物变成了数字。

答案 3 :(得分:2)

+是将其强制转换为其他人所说的数字。这是需要的,因为表单输入总是字符串值,并且将字符串添加到另一个变量将它们连接成一个新字符串,即使该字符串看起来像一个数字。

答案 4 :(得分:1)

算术上说,一元加运算符是一个noop。但与所有其他纯算术运算符一样,它会将其参数转换为JavaScript的数字类型,因此可以用作显式转换的简写。

JavaScript中的显式类型转换是通过使用new运算符调用相应的构造函数而不是来完成的。

例如,

Number(foo)

会将foo转换为数字类型的基元,而new Number(foo)会另外为基元创建包装器对象,因此相当于

Object(Number(foo))

+类似,使用!!转换为布尔类型。