我亂搞JavaScript控制檯,並注意到爲什麼JavaScript中的語句會忽略對象字面值?
>> {}[1]
[1]
評估作爲數組。經過一些更多的搞亂我發現
>> b = {}[1]
undefined
給我的未定義的預期結果。起初我以爲花括號中被解釋爲一個塊,但試圖
>> {a:1}[1]
[1]
仍然給了我的[1]
陣列。我希望如果它被解釋爲一個塊,它會導致語法錯誤。爲什麼會這樣?
更多信息:我從Don't understand why you should not use an object literal at the beginning of a statement發現,這可能是一個塊,但是這並沒有回答如何,這是不是一個語法錯誤,除非它是做一個超前,以確定它是否是一個對象字面或塊,但它不是對象文字,因爲它仍然評估爲[1]
。
編輯:我在Chrome和Firefox的調試控制檯和Node.js的命令行界面中試過。
JavaScript是不可思議......這是值得watching- [鏈接](https://www.destroyallsoftware.com/talks/wat)(JavaScript的開始於1:20) – mm8511
我覺得你已經回答了你自己題。在這種情況下它被解釋爲一個塊。你可以做''hello'',它會返回''hello'''。但是,如果您嘗試將此值存儲在變量中,則會導致拋出錯誤。 –