以下代码在Chrome和Firefox中产生语法错误,但不会产生Node.js:
{"hello": 1}
Run Code Online (Sandbox Code Playgroud)
但是,以下代码无处不在:
var x = {"hello": 1}
Run Code Online (Sandbox Code Playgroud)
此外,以下工作无处不在:
{hello: 1}
Run Code Online (Sandbox Code Playgroud)
这种奇怪的行为有什么解释?
Rob*_*b W 11
所述的NodeJS REPL评估代码作为表达,通过包装在括号中的代码,从而导致{"hello":1}
要({"hello":1})
被成功地分析作为对象常量.
通常和其他地方(在Chrome/Firefox的控制台中),花括号被解析为块的分隔符,如:
/*imagine if (true) */ {
"hello": 1 // <-- What's this syntax? It's meaningless.
}
Run Code Online (Sandbox Code Playgroud)
{hello:1}
解析成功,因为hello
在此上下文中具有标签的含义:
/*imagine if (true) */ {
hello: 1;
} // ^-- Automatic Semicolon Insertion
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
686 次 |
最近记录: |