This question already has answers here:
Why does 2..toString() work? [duplicate]
(5个答案)
4年前关闭。
如果我跑步
它按预期方式记录
它抛出一个错误:
我注意到它也适用于num变量中的十进制值(例如.3,.99、2.12、99.1)等。请问有人可以帮助我了解它们的区别以及此函数的工作原理
我们将其视为一个Integer并对其调用了一个函数。
解析器没有。解析器看到尝试声明浮点文字的尝试。解析器使用以下代码:
假定您正在声明Floating-Point Literal,因为它是:
不是变量,因为它不是以字母或可接受的字符开头 是数字文字,因为它以数字字符 开头是一个浮点数,因为其中有一个小数点。
如果确实出于所有意图和目的想要调用
要么
话虽这么说,JavaScript足够灵活,足以知道您想在大多数情况下使用23作为字符串。这样编译就可以了。
也是。
不是这样
(5个答案)
4年前关闭。
如果我跑步
var num = 23;
var n = num.toString();
console.log(n)
它按预期方式记录
23
,但是如果我将toString()
直接应用于类似这样的数字,var n = 15.toString();
console.log(n)
它抛出一个错误:
Uncaught SyntaxError: Invalid or unexpected token.
我注意到它也适用于num变量中的十进制值(例如.3,.99、2.12、99.1)等。请问有人可以帮助我了解它们的区别以及此函数的工作原理
最佳答案
JavaScript解析按预期进行。您已声明以下内容:
23.toString()
我们将其视为一个Integer并对其调用了一个函数。
解析器没有。解析器看到尝试声明浮点文字的尝试。解析器使用以下代码:
[(+|-)][digits][.digits][(E|e)[(+|-)]digits]
假定您正在声明Floating-Point Literal,因为它是:
如果确实出于所有意图和目的想要调用
23.toString()
,则操作过程是像这样隔离文字:(23).toString(); //interprets 23 as literal
要么
23..toString(); //interprets 23. as literal
话虽这么说,JavaScript足够灵活,足以知道您想在大多数情况下使用23作为字符串。这样编译就可以了。
var foo = "The answer is " + 42;
也是。
var bar = "39" - 0 + 3; //42
不是这样
var baz = "39" + 3; //393!!!
关于javascript - 数字toString()方法返回数字和变量的不同值。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40409696/