下面的代碼生成一個語法錯誤在Chrome和Firefox,但不是Node.js的:JavaScript對象文字語法錯誤
{"hello": 1}
但是,下面的代碼工作無處不在:
var x = {"hello": 1}
而且,以下作品無處不在:
{hello: 1}
這種奇怪行爲的解釋是什麼?
下面的代碼生成一個語法錯誤在Chrome和Firefox,但不是Node.js的:JavaScript對象文字語法錯誤
{"hello": 1}
但是,下面的代碼工作無處不在:
var x = {"hello": 1}
而且,以下作品無處不在:
{hello: 1}
這種奇怪行爲的解釋是什麼?
NodeJS REPL evaluates code as an expression,通過將代碼包裝在圓括號中,導致{"hello":1}
爲({"hello":1})
,它被成功解析爲對象文字。
通常和其他地方(在Chrome/Firefox中的控制檯),大括號被解析爲一個塊的分隔符,如:
/*imagine if (true) */ {
"hello": 1 // <-- What's this syntax? It's meaningless.
}
{hello:1}
成功解析,因爲hello
在這方面具有的意義label:
/*imagine if (true) */ {
hello: 1;
} // ^-- Automatic Semicolon Insertion
嘗試移除 「」 從鍵等中使用{你好:1},在JavaScript的鍵不是必要之間 「」(報價)。 – Anshul