为什么用toFixed在JavaScript等式前面加上加号?
我刚刚浏览了particles.js的源代码,发现了以下代码行:为什么用toFixed在JavaScript等式前面加上加号?,javascript,Javascript,我刚刚浏览了particles.js的源代码,发现了以下代码行: this.speed.x = +((-options.maxSpeedX / 2) + (Math.random() * options.maxSpeedX)).toFixed(2); 这行代码也可以找到 现在表达式开始处的+号在等式中没有差异。例如 (-2 + 5) = 3 现在 +(-2 + 5) = 3 另一个例子: (-5 + 2) = -3 现在 为什么表达式开头的加号对等式的结果没有影响?返回一个字符
this.speed.x = +((-options.maxSpeedX / 2) +
(Math.random() * options.maxSpeedX)).toFixed(2);
这行代码也可以找到
现在表达式开始处的+号在等式中没有差异。例如
(-2 + 5) = 3
现在
+(-2 + 5) = 3
另一个例子:
(-5 + 2) = -3
现在
为什么表达式开头的加号对等式的结果没有影响?返回一个字符串。你需要把它转换成数字。用于将字符串转换/强制转换为数字
返回
numObj的一种字符串表示形式,不使用指数表示法,小数点后正好有数字。如果需要,数字将四舍五入,如果需要,小数部分将用零填充,以使其具有指定的长度。如果numObj大于1e+21,则此方法只调用并返回一个指数表示的字符串
当结果已经是一个数字时,不需要它。例如,+(-2+5)
但是,在下面的操作中,它是必需的
this.speed.x = +((-options.maxSpeedX / 2) +
(Math.random() * options.maxSpeedX)).toFixed(2);
你的代码基本上是
x = +someNumber.toFixed(2);
那是
x = +(someNumber.toFixed(2));
因为
这使得
x = +(someNumberFormattedAsARoundedString);
应用将字符串转换回数字。净结果是初始的someNumber
的四舍五入
在您链接到的这个特定案例中,由于不知道什么是IEEE754浮点数,这看起来像是不良做法。看起来作者试图获得固定精度的数字,从而混淆了数字存储及其表示(即格式)
x = +(someNumberFormattedAsARoundedString);