在数字文字上调用toFixed方法

Dan*_*eld 2 javascript tofixed

当我在十进制数字文字上调用toFixed()方法时,如下所示:

var a = 67.678.toFixed(2);
console.log(a);
Run Code Online (Sandbox Code Playgroud)

结果有效并返回67.68

但是,如果我在整数上调用该方法 - 我会收到错误

var b = 67.toFixed(2);
console.log(b); // causes ERROR
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

注意:

如果我将整数保存到变量 - toFixed()方法确实有效.

var c = 67;
c = c.toFixed(2);
console.log(c); // returns 67.00
Run Code Online (Sandbox Code Playgroud)

看到这个jsBin

引擎盖下发生了什么?

Ami*_*mit 5

var b = 67.toFixed(2);简单地生成一个解析错误,因为解析器无法推断出你的意思是它是一个数字文字后面跟一个属性访问器(请注意,错误是在第一行,而不是在第一行console.log(b))

这样做的原因67.678.toFixed(2)是没有其他选择.解析器可以毫不含糊地推断出数字文字以"8"数字结束并且可以继续将下一个点解析为属性访问器(这导致首先拳击到Number对象BTW).

解决方案显然很简单:

(67).toFixed(2);
Run Code Online (Sandbox Code Playgroud)