gpt4 book ai didi

javascript - 为什么 Google Chrome 控制台在输入时会抛出 "SyntaxError: Unexpected token }"(

转载 作者:行者123 更新时间:2023-11-28 08:06:44 25 4
gpt4 key购买 nike

在 Google Chrome 的控制台中,当我们输入时

(

然后输入,Chrome 会显示“SyntaxError: Unexpected token }”,为什么?输入只是“(”,不包括“}”。

当我们输入时,我们得到同样的错误

console.log(

没有“}”!!!

下一个标记应该是参数列表或“)”,因此错误消息应该是“预期参数列表”或“未关闭(”或其他内容。

我想知道,控制台输入是否被解析为 StatementList(opt) (在 ECMA-262 中定义)?

最佳答案

编辑:我找到了评估的确切代码。代码位于“src/third_party/WebKit/Source/WebCore/inspector/InjectedScriptSource.js”中。

Chrome 控制台在评估您的代码之前,会将其包装在 with 中。 block 将命令行函数纳入范围。所以你输入的内容实际上是在大括号内评估的。意外的“}” token 是 Chrome 自动添加的 token 。

Chrome 传递给 eval 的代码是

with ((window && window.console && window.console._commandLineAPI) || {}) {
<your code here>
};

因为这是一个简单的文本替换,所以以下示例有效,结果是一个对象,您可以展开该对象以查看 answer属性:

} 0, { answer: 42

哪个(重新格式化)相当于:

with ((window && window.console && window.console._commandLineAPI) || {}) {
}
0, { answer: 42 };

}在开始时关闭 with堵塞。 0,强制将对象字面量解析为表达式而不是另一个 block 是必需的。然后,{ answer: 42是由插入的 } 关闭的对象文字的开头 token 。

为了获得更多乐趣,以下是一些其他有效的输入(及其结果):

> }{ // an empty block, so no value
undefined

> }!{ // !{} === false
false

> }!!{ // !!{} === true
true

> } +{ valueOf: function() { return 123; }
123

关于javascript - 为什么 Google Chrome 控制台在输入时会抛出 "SyntaxError: Unexpected token }"(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719839/

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