2011-12-18 31 views
7

當試圖訪問該對象{}爲什麼在Object Object上直接訪問屬性會引發SyntaxError?

{}.a 

我得到錯誤的財產a

SyntaxError: Unexpected token . 

用括號一切都很好:

({}).a 

爲什麼我會得到一個錯誤在第一個地方?有歧義嗎?

+0

JavaScript語法只是不允許。 – Eliasdx 2011-12-18 18:30:01

+0

表達式'{}'計算出一個沒有自己屬性的新本地對象。你想要訪問一個'Object.prototype'方法嗎? – 2011-12-18 18:42:04

+1

[立即訪問對象的屬性]的可能重複(http://stackoverflow.com/questions/7518538/immediately-accessing-an-objects-property) – RightSaidFred 2011-12-18 18:46:36

回答

15

花括號被解釋爲block statement,而不是對象字面量。您無法用左大括號開始表達式語句。

說明書聲明:

注意ExpressionStatement不能以大括號 開始,因爲這可能使含糊帶。而且, ExpressionStatement不能與function關鍵字,因爲 可能使其曖昧與FunctionDeclaration開始。

來源:http://es5.github.com/x12.html#x12.4

1

的{}在那裏建立的對象。通常您首先將新對象分配給一個變量。

var o = { 
    a: "b" 
}; 

console.log(o.a); 

而這也是可能的:

console.log({ 
    a: "b" 
}.a); 
相關問題