以下代码在 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