1
我在谷歌瀏覽器控制檯運行是這樣爲什麼{} + {}在同一瀏覽器的作品有不同的結果
{} + {} =>「[對象的對象] [對象的對象] 「
但我在源文件中運行是這樣
{} + {} =>的NaN
我在火狐瀏覽器控制檯運行是這樣
{} + {} => NaN的
我在谷歌瀏覽器控制檯運行是這樣爲什麼{} + {}在同一瀏覽器的作品有不同的結果
{} + {} =>「[對象的對象] [對象的對象] 「
但我在源文件中運行是這樣
{} + {} =>的NaN
我在火狐瀏覽器控制檯運行是這樣
{} + {} => NaN的
我正準備另一個答案,基本上說,「我不知道,但這裏有一些測試,我做並得到了類似的結果「。但突然間我意識到了真正的答案。
我認爲這在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 ~{}