2012-08-17 81 views
6

可能重複:
What is the explanation for these bizarre JavaScript behaviours mentioned in the 'Wat' talk for CodeMash 2012?哪有{} + []和[] + {}的結果是不同的

有人能向我解釋thees返回結果如何可以在不同的JavaScript的:

› {} + [] 
» 0 
› [] + {} 
» "[object Object]" 
+1

因爲它的JavaScript ...誰說,它有什麼意義?! – Mehrdad 2012-08-17 04:44:24

+6

['WAT'](https://www.destroyallsoftware.com/talks/wat)? :) – Nemoden 2012-08-17 04:44:50

+3

http://stackoverflow.com/questions/9032856/what-is-the-explanation-for-these-bizarre-javascript-behaviours- mentioned-in-the – 2012-08-17 04:45:02

回答

7

這是因爲在代碼中{}不是對象文字,而是一個空白塊。

{}; // empty block 
+ []; // this result is shown in the console 

({}) + []這產生相同的結果[] + {}比較;:

,因爲它被解析在這種情況下,圓括號強制{}在「表達式上下文中」被處理/解析。

有重複的上一個SO一堆{}這個特定雙本質(作爲表達或阻止?),但,發現它們可以是有些麻煩..


我發現https://meta.stackexchange.com/questions/83911/how-do-i-search-stackoverflow-for-at-keywords-like-private-or-synthesize元和使用Symbolhound「我最近」重複我可以找到解決圍繞問題like this(這涉及到需要添加括號時,「評估JSON」)或this(其中使用的結構像「{} ==虛假「是一個語法錯誤)。

如果有人知道一個更好的方式來爲這類問題,以便進行搜索,或有一個鏈接到這種重複的得心應手..

+0

@ErikLandvall如果你會發現一些重複的東西,只是投票關閉/鏈接:)不要刪除問題,它會被關閉/如果適當的話。 – 2012-08-17 04:51:32

+0

其實找到重複是問題。我確信在過去的幾天裏我看到了同樣的問題,但是搜索'[]'不太好。 – nnnnnn 2012-08-17 05:00:17

+0

是的,我有這個問題。現在我只是試圖將它們合併爲pst聲明。 http://stackoverflow.com/questions/9032856/what-is-the-explanation-for-these-bizarre-javascript-behaviours-mentioned-in-the – superhero 2012-08-17 05:49:49