为什么像 Firefox 和 Chrome 控制台中的 '}{' 这样的结构会返回"未定义"?



如果我输入

}{

在 Firefox 或 Chrome 的控制台中,结果是未定义的而不是语法错误。

此构造返回未定义(构造类似 }!{ 返回假)。这种行为的原因是什么?

当您在控制台中输入 debugger; 时,会显示一个断点,其中显示了答案:

with ((window && window.console && window.console._commandLineAPI) || {}) {
debugger;
}

在Chrome的开发者工具中,输入被包装在一个with块中,然后进行字面评估。因此,当您输入 }{ 时,将评估以下内容:

with ((window && window.console && window.console._commandLineAPI) || {}) {
}{
}

这是一个空的with块,后跟一个空块。

对读者的练习:尝试}for(;;){

最新更新