以下代码在 Chrome 和 Firefox 中产生语法错误,但不会在 Node.js 中产生:
{"hello": 1}
但是,以下代码适用于任何地方:
var x = {"hello": 1}
此外,以下适用于任何地方:
{hello: 1}
这种奇怪行为的解释是什么?
以下代码在 Chrome 和 Firefox 中产生语法错误,但不会在 Node.js 中产生:
{"hello": 1}
但是,以下代码适用于任何地方:
var x = {"hello": 1}
此外,以下适用于任何地方:
{hello: 1}
这种奇怪行为的解释是什么?
所述的NodeJS REPL评估代码作为表达,通过包装在括号中的代码,从而导致{"hello":1}
要({"hello":1})
被成功地分析作为对象常量。
通常和其他地方(在 Chrome/Firefox 的控制台中),花括号被解析为块的分隔符,例如:
/*imagine if (true) */ {
"hello": 1 // <-- What's this syntax? It's meaningless.
}
{hello:1}
解析成功,因为hello
在此上下文中具有标签的含义:
/*imagine if (true) */ {
hello: 1;
} // ^-- Automatic Semicolon Insertion