这行javascript是做什么的?

这行javascript是做什么的?,javascript,Javascript,当我看地图时,我看到了这条线: total = subtotal + (+myInput.value); 第二个“+”的作用是什么?与熟悉的一元负号(-x)相比,一元加号是完整的。但是,如果myInput.value是字符串之类的其他内容,则它会产生副作用,这一点在这里得到了证实: alert(1+'2'); // 12 alert(1+(+'2')); // 3 这就是所谓的“一元+运算符”,它可以作为一种快速方法,强制将变量转换为数字,以便在数学运算中使用。正如其他人所说,+是将其键入数

当我看地图时,我看到了这条线:

total = subtotal + (+myInput.value);

第二个“+”的作用是什么?

与熟悉的一元负号(-x)相比,一元加号是完整的。但是,如果myInput.value是字符串之类的其他内容,则它会产生副作用,这一点在这里得到了证实:

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

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

正如其他人所说,+是将其键入数字。这是需要的,因为表单输入总是字符串值,向另一个变量添加一个字符串会将它们连接成一个新字符串,即使字符串看起来像一个数字。

将事物转换成一个数字。

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

JavaScript中的显式类型转换是通过调用适当的构造函数而不使用
new
操作符来完成的

比如说,

Number(foo)
foo
转换为number类型的原语,而
newnumber(foo)
将为原语另外创建一个包装器对象,因此相当于

Object(Number(foo))

类似于
+
的用法是
转换为布尔类型。

谢谢,我不知道这个符号。我假设这基本上是parseInt()的简写形式?它们不完全相同,Luke,请参阅此处了解一些信息:当然,它更接近于“parseFloat”+-强制转换支持完整的浮点数文本,包括像+'Infinity'这样的奇怪字符。实际上,
(+foo)
最接近的是显式强制转换
number(foo)
-事实上,它们应该产生相同的结果。有什么理由认为这比parseInt更可取吗?