在Chrome的devtools鍵入這個:{num:1}.num
給出了一個語法錯誤:大括號語法錯誤?:{NUM:1}後的JavaScript點.num
SyntaxError: Unexpected token .
...但輸入這個返回1:
(function() {
return {num:1}.num;
})();
爲什麼我在第一個示例中遇到語法錯誤,但不是第二個?
在Chrome的devtools鍵入這個:{num:1}.num
給出了一個語法錯誤:大括號語法錯誤?:{NUM:1}後的JavaScript點.num
SyntaxError: Unexpected token .
...但輸入這個返回1:
(function() {
return {num:1}.num;
})();
爲什麼我在第一個示例中遇到語法錯誤,但不是第二個?
由於在這種情況下大括號是不明確的,並且被解釋爲block statement,而不是對象字面量。喜歡的東西
{
num: 1
}
.num
凡num:
被解釋爲label。
您可以使用分組運算符迫使結構被解釋爲表達:
({num: 1}).num
在第二種情況下,括號只能是對象文本,因爲return語句只能包含一個表達式(不是語句)
我知道我可以在對象周圍包圍括號以確保正確解析,但爲什麼第二個示例沒有拋出像第一個錯誤? –
'a = {num:1} .num;'在Chrome開發工具控制檯中可以使用 –
謝謝,intersting。儘可能接受。 –
'({num:1} .num)'在Chrome開發工具中可以使用 –