2016-04-16 102 views

回答

0

我正準備另一個答案,基本上說,「我不知道,但這裏有一些測試,我做並得到了類似的結果「。但突然間我意識到了真正的答案。

我認爲這在JavaScript語法中有點不確定。 Chrome控制檯開發人員可能會意識到這一點,並且每當您在控制檯中寫入{}+{}時,它都會將代碼變爲({}+{})。嘗試({}+{})a={}+{},您將得到相同的結果,即"[object Object][object Object]"。這是在javascript中對兩個對象應用加號運算符的結果。

但是,當您在代碼片段中編寫一些代碼時,它會按原樣進行評估。它計算{}+{}NaN。但是NaN不是添加兩個對象的結果。 {}是對象構造函數。但它也用於範圍。所以評估等於:

{ // Open scope 
    // You can write any working code here 
    // Only the result of the last statement is printed to console 
} // Close scope 
+{} // Result of this is NaN 
// + is the unary number cast operator not the binary addition operator 

您可以通過使用只是一元運算符來確認這一點。以此爲例:

{}~{} 
// Error in Chrome console as it is turned into ({}~{}) which is bad syntax 
// -1 in eval as it is the result of ~{} 
相關問題