152..toString(2)
正确创建二进制字符串“10011000”,但
152.toString(2)
抛出异常
“SyntaxError:标识符在数字文字之后立即开始”
为什么?后者的语法实际上听起来更正确,而前者看起来很奇怪!
152..toString(2)
正确创建二进制字符串“10011000”,但
152.toString(2)
抛出异常
“SyntaxError:标识符在数字文字之后立即开始”
为什么?后者的语法实际上听起来更正确,而前者看起来很奇怪!
数字后的A.
可能看起来模棱两可。它是小数还是对象成员运算符?
但是,解释器认为它是小数,因此您缺少成员运算符。
它认为它是这样的:
(10.)toString(); // invalid syntax
当您包括第二个.
时,您有一个小数,后跟成员运算符。
(10.).toString();
@pedants 和 downvoters
.
人物表现出模棱两可。可以理解为成员运算符,也可以是小数,视其位置而定。如果没有歧义,就没有问题可问。
规范对该特定位置的字符的解释.
是它将是一个小数。这是由 ECMAScript 的数字文字语法定义的。
仅仅因为规范解决了 JS 解释器的歧义,并不意味着.
字符的歧义根本不存在。
词法分析器(又名“tokenizer”)在读取新标记时,在第一次找到一个数字时,将继续使用字符(即数字或一个点),直到它看到一个不属于合法数字的字符。
<152.>
是合法标记(不需要尾随 0)但<152..>
不是,因此您的第一个示例简化为这一系列标记:
<152.> <.> <toString> <(> <2> <)>
这是合法的(和预期的)序列,而第二个看起来像
<152.> <toString> <(> <2> <)>
这是非法的 - 没有将号码与toString
通话分开的句号。
10.
是float number
一个你可以使用 toString 的float
例如。
parseFloat("10").toString() // "10"