JavaScript中array.push()与.toFixed()调用问题咨询
JavaScript随机数生成中.toFixed()位置问题解析
问题1:为何将.toFixed(q)放入array.push()括号内后结果异常?
先明确两种写法的本质差异:
- 你的原始写法:
array.push(计算结果).toFixed(q);array.push()的返回值是数组的新长度(一个整数),调用.toFixed(q)是对这个整数做格式化,得到的字符串并没有存入数组——数组里实际存储的是计算结果(数字类型)。数字在显示时会自动省略末尾无意义的0(比如9.0会显示为9),所以你觉得结果符合预期。 - 修改后的写法:
array.push(计算结果.toFixed(q));
这里是先对计算结果调用.toFixed(q),得到字符串类型的格式化结果(比如9.0会变成"9.000"),再把这个字符串存入数组。字符串会完整保留格式化后的所有字符,所以出现了你看到的末尾全0的情况,和你预期的数字显示效果不符。
另外你的计算逻辑中,当随机数生成的结果刚好是整数时(比如Math.round后得到的整数使得计算结果为m + 整数/q1,而整数是0或刚好凑整的情况),计算结果本身就是带末尾0的数字,.toFixed(q)会把这些0全部保留为字符串的一部分,这也是你看到9.000这类结果的原因。
问题2:array.push()是否存在.toFixed()方法?
不存在。array.push()是数组的方法,它的返回值是数字类型的数组新长度。.toFixed()是Number类型专属的方法,你在array.push()后调用.toFixed(),本质是对push返回的数字(数组长度)执行格式化,而非push方法本身拥有这个方法。
内容的提问来源于stack exchange,提问作者ADasGH
相关产品推荐
相关产品推荐

