2012-09-20 50 views
3

鑑於下面的例子:爲什麼JS中的括號中包含對象?

var foo = { 
    root: 
     ({ 
      key1: "Value1", 
      key2: "Value2", 
      key3: "Value3" 
     }) 
    }; 

是什麼相比有以下的不同:

var foo = { 
    root: 
     { 
      key1: "Value1", 
      key2: "Value2", 
      key3: "Value3" 
     } 
    }; 

在第一示例中有一個附加的括號包裝的對象。這有什麼用途?它與範圍界定有什麼關係?它以任何方式影響執行嗎? 謝謝!

+1

有沒有區別。在這兩種情況下,'typeof(foo.root)'return'object',但我從來沒有見過第一種語法 – fcalderan

+0

有趣,不知道你能做到這一點,我不認爲有什麼區別。不知道其他人對此有何評論。 – Shikyo

+0

我盯着這兩個例子半分鐘,然後不得不閱讀文本,才能真正看到差異..好問題! –

回答

2

他們什麼都不做:)他們在那裏是爲了便於閱讀,儘管如果他們實現這個目標是值得懷疑的。

1

按照我的說法,我們應該用方括號來收集對象。因爲JavaScript會理解它是一個數組。

圓括號(在示例1中使用)僅由javasript解析器驗證。當你嘗試訪問它時,java腳本只返回圓括號中的最後一個對象(如堆棧中的頂層對象)。

試試下面的腳本

var foo = { 
    root1: 
     { 
      key1: "Value1", 
      key2: "Value2", 
      key3: "Value3" 
     }, 
    root2:({ 
      key4: "Value4", 
      key5: "Value5" 
      },{ 
      key6: "Value6", 
      key7: "Value7" 
     }), 
    root3:[ 
     { 
      key8: "Value8", 
      key9: "Value9" 
      },{ 
      key10: "Value10", 
      key11: "Value11" 
      } 
    ] 
    }; 
    console.log(foo['root1']); // returns object { key1, key2, key3} 
    console.log(foo['root2']); // returns only { key6,key7} 
    console.log(foo['root3']); //returns [ {key8,key9},{key10,key11}] 
相關問題