2012-09-20 35 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}] 
相关问题