,然後試圖立即訪問他們的屬性:立即訪問鑑於定義對象的這四個實例對象的屬性
{foo: 'bar'}.foo
// syntax error: unexpected_token
我預計這將返回「富」的價值,但它會導致語法錯誤。
我能想出的唯一解釋是對象定義尚未執行,因此尚未成爲對象。看來,對象定義因此被忽略和語法錯誤來自試圖只執行:
.foo
// results in the same syntax error: unexpected_token
同理:
{foo: 'bar'}['foo']
// returns the new Array ['foo']
這似乎是證據,文字的對象被忽略,尾隨代碼被執行。
然而,這些做工精細:
({foo: 'bar'}).foo
// 'bar'
({foo: 'bar'})['foo']
// 'bar'
括號是用來運行的代碼行,並自認爲括號運算符的結果是實例化對象,你可以訪問屬性。
那麼,爲什麼被忽略的對象定義並不立即執行?
這只是好奇?或者實際上有一個合法的理由來使用:'{foo:'bar'}。foo'? – jfriend00
對語言如何解釋這條線感到好奇。 – wlmeurer