假设我写的0.5
是0.-5
在意想不到的方式,但它仍然可以运行。是什么0.
在0.-5
这样做,它仍然可以运行,并评估为-5?
我也试过alert(0.-5+1)
它打印-4,不忽略的JavaScript0.
的0.-5
?
假设我写的0.5
是0.-5
在意想不到的方式,但它仍然可以运行。是什么0.
在0.-5
这样做,它仍然可以运行,并评估为-5?
我也试过alert(0.-5+1)
它打印-4,不忽略的JavaScript0.
的0.-5
?
0.-5
是“意外的方式”?
0.-5
遇到语法错误,也不要在结尾加上末尾的浮点文字,而是强迫人们.0
在结尾处写。
.
可以防止您写类似的东西123.toString(16)
(一个常见的技巧是使用123..toString(16)
,这的确是(123.).toString(16)
)
Answers:
0.-5
可以成功解析为0.
[1],-
并且5
。下面是AST资源管理器生成的表达式的抽象语法树:
这(以一种意外的方式)是有效的JavaScript,其值为-5
。
[1]根据数字文字的语法,十进制数字和指数部分是可选的:
NumericLiteral ::
DecimalLiteral
[...]DecimalLiteral ::
DecimalIntegerLiteral。DecimalDigits opt ExponentPart opt
在JS中,您可以用可选的小数点表示数字。
x = 5.; //5
x = 5. + 6. //11
正如Tvde1的评论一样,任何Number方法也可以应用。
5..toString()
这种语法使我们可以在不带括号的情况下运行Number函数。
5.toString() //error
(5).toString() //good
5..toString() //good
5 .toString() // awesome
看到这个问题,找出原因。
5..toString()
。
1.0
是,浮点数1.
是整数。
float
有方法,5.
是float
。
(1).toMethod()
合法的语言都禁止(1.)
正确解析。最传统的解析方法(对包括文字的标记进行贪婪词汇化,然后进行解析)会产生Javascript行为。
console.log(0. - 5) // -5
console.log(0 - 5) // -5
console.log('0.' - 5) // -5
console.log('0' - 5) // -5
console.log(0.-5 === -5) // true
“ 0”。或'0'在JavaScript中相同,因为类型对于数字是唯一的,称为Number。减号运算符位于数字之间,请始终尝试将传递的内容转换为数字。在Python中有所不同,第一个是Float,第二个是Integer,因为它有几种类型。
0.
就像0.0
。或者只是0
。