2017-05-04 134 views
2

今天我得到了一個奇怪的語法問題,並注意到一些奇怪的事情。這實際上編譯爲有效的JS:爲什麼這個JavaScript有效?

confusing: { thisWorks: 'why?' } 

它向控制檯輸出「爲什麼」。

任何想法,爲什麼?

你也可以把它包在像這樣的功能:

// calling myFunc() returns undefined 
const myFunc =() => { 
    confusing: { thisWorks: 'why?' } 
}; 

必須是JS的某個角落,我剛剛從來沒有遇到過?似乎是由於語法不正確導致的奇怪行爲,但同時並不會導致錯誤?

+0

總之:塊,標籤,分號遺漏。 – Bergi

+3

它是[標籤](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label)和[blocks](https://developer.mozilla.org/en-US /文檔/網絡/ JavaScript的/參考/語句/塊)。 – Xufox

+0

http://stackoverflow.com/questions/13588747/uncaught-syntaxerror-unexpected-token/是我發現的最好的重複候選人 – Bergi

回答

1

好的。如果你能理解爲什麼這個說法

thisWorks: 'why?' 

輸出'爲什麼?'。如果不讀 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label

下一頁如果你能理解爲什麼這個說法

{ thisWorks: 'why?'; } 

輸出 '爲什麼?'。應該沒有理由不明白爲什麼這個聲明

confusing: { thisWorks: 'why?' } 

會返回'爲什麼?'。這裏confusingthisWorks都是標籤。

+0

合理!感謝Yasser的解釋。 –

+0

不客氣:) – Yasser