Javascript:什么是“ - 0”在做什么?

时间:2014-03-04 20:22:18

标签: javascript

这纯粹是一个教育问题。

我正在开发一个新版本的网络应用程序,我正在为之前工作的公司做过。在重写数学时,我遇到了这个:

document.getElementById("estResidual").value-0;

认为“-0”没有任何目的,我将其删除了。但是,当我尝试计算时,数字是waaayyyyyy关闭。然后我尝试重新添加“-0”,瞧!一切都很顺利。

问题: “-0”做了什么来改变价值?

3 个答案:

答案 0 :(得分:19)

这是(ab)使用JavaScript的软输入行为。在这种情况下,它会将字符串转换为float:

> "13"
"13"
> "13"-0
13
> "1.01"-0
1.01

一元+也会这样做:

> +"13"
13
> +"9.9"
9.9

请注意,使用+会将整数0转换为字符串并将其连接起来:

> "13"+0
"130"

这都是标准化的。有关这些运算符应如何表现的明确详细信息,您可以随时查看ECMAScript语言规范(例如additionsubtractionunary plus)。

答案 1 :(得分:1)

JS引擎动态重新编译以尝试使语句正常工作。因此,当您尝试对其执行数学运算时,JS会将“23”转换为整数23,如果您执行以下操作,它也会将整数23转换为字符串“23”:

var a = 23;
console.log(23 + "asdf");
//outputs "23asdf"

答案 2 :(得分:1)

这会强制对象的类型变为数字而不是字符串。