gpt4 book ai didi

javascript - Javascript 是如何试图解释这个非法语句的?

转载 作者:行者123 更新时间:2023-11-30 10:02:57 24 4
gpt4 key购买 nike

在某些 Javascript 代码中存在错误,小数点 0.04 被声明为 0.0.4,如下所示:

var x = 0.0.4;

当它在 Firefox 中运行时,给出的错误是:

SyntaxError: missing ; before statement

IE 声明:

Expected ';'

Chrome 声明:

Uncaught SyntaxError: Unexpected number

我知道 0.0.4 不是数字或文字,但 Javascript 如何试图解释该语句?为什么它认为缺少 ; ?

最佳答案

Chrome

Chrome 将赋值的第一部分视为 float 0.0,您希望访问键 0 处的属性,这在 JavaScript 中是不允许的 (您不能使用点符号来引用数字键)。换句话说,您可以将作业拆分为以下等价物:

var x = 0.0
x.0 // Throws unexpected number

相比之下,这是有效的:

var x = 0.0.toString()

在我看来,这是最合乎逻辑的解析器实现,其中的错误最有意义。

火狐

Firefox 将赋值的第一部分视为 float 0.0,但对 .0 部分感到困惑 - 它不将此识别为属性访问而是认为您想开始一个新语句(.4,它是 0.4 的简写) - 因此它告诉您您错过了一个分号,该分号用于终止声明。

当您使用有效的属性访问器(字符串)时,它仍然可以正确解释语句:

var x = 0.0.toString()

有点相关的也是this SO question其中讨论了类似的行为。

关于javascript - Javascript 是如何试图解释这个非法语句的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30664989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com