2016-03-03 122 views

回答

7

{}+{}後跟一個表達式。第一個{}是塊(類似於您附加到if聲明的類型),+{}是表達式。第一個{}是一個塊,因爲當解析器正在查找語句並看到{時,它將其解釋爲塊的打開。那塊空的,什麼都不做。處理完該塊後,解析器將看到+並將其讀取爲一元文件+。這將解析器轉換爲處理表達式。在表達式中,{啓動對象初始值設定項而不是塊,因此{}是對象初始值設定項。對象初始值設定項創建一個對象,然後+然後試圖強制一個數字,得到NaN

({}+{})中,開頭(將解析器轉換爲期望表達式而不是語句的模式。因此,()包含兩個對象初始值設定項與二進制值+(例如,「加法」運算符,它們可以是算術或字符串連接)。二進制+運算符將嘗試添加或連接,具體取決於其操作數。它將它的操作數強制爲原語,並且在{}的情況下,它們都成爲字符串"[object Object]"。所以你最終得到"[object Object][object Object]",這是連接它們的結果。

1

由於含糊不清。 {}是一個對象,但也是一個塊邊界。沒有()它被解釋爲後者。

相關問題