这纯粹是一个教育问题。
我正在开发一个新版本的网络应用程序,我正在为之前工作的公司做过。在重写数学时,我遇到了这个:
document.getElementById("estResidual").value-0;
认为“-0”没有任何目的,我将其删除了。但是,当我尝试计算时,数字是waaayyyyyy关闭。然后我尝试重新添加“-0”,瞧!一切都很顺利。
问题: “-0”做了什么来改变价值?
答案 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语言规范(例如addition,subtraction。unary plus)。
答案 1 :(得分:1)
JS引擎动态重新编译以尝试使语句正常工作。因此,当您尝试对其执行数学运算时,JS会将“23”转换为整数23
,如果您执行以下操作,它也会将整数23
转换为字符串“23”:
var a = 23;
console.log(23 + "asdf");
//outputs "23asdf"
答案 2 :(得分:1)
这会强制对象的类型变为数字而不是字符串。