如果我输入
}{
在 Firefox 或 Chrome 的控制台中,结果是未定义的,而不是语法错误。
此构造返回未定义(构造类似 }!{ 返回假)。这种行为的原因是什么?
当您在控制台中输入 debugger;
时,会显示一个断点,其中显示了答案:
with ((window && window.console && window.console._commandLineAPI) || {}) {
debugger;
}
在Chrome的开发者工具中,输入被包装在一个with
块中,然后进行字面评估。因此,当您输入 }{
时,将评估以下内容:
with ((window && window.console && window.console._commandLineAPI) || {}) {
}{
}
这是一个空的with
块,后跟一个空块。
对读者的练习:尝试}for(;;){