以下代码在Chrome和Firefox中会产生语法错误,但在Node.js中不会:
这个奇怪行为的解释是什么?
{"hello": 1}
然而,以下代码在任何地方都可以运行:
var x = {"hello": 1}
同样,以下方法适用于所有情况:
{hello: 1}
这个奇怪行为的解释是什么?
{"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