Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么用toFixed在JavaScript等式前面加上加号?_Javascript - Fatal编程技术网

为什么用toFixed在JavaScript等式前面加上加号?

为什么用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 现在 为什么表达式开头的加号对等式的结果没有影响?返回一个字符

我刚刚浏览了particles.js的源代码,发现了以下代码行:

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);