7

给定以下示例:

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

与以下相比有什么区别:

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

在第一个示例中,有一个额外的括号包裹了对象。这是为了什么目的?它与范围界定有什么关系吗?它是否以任何方式影响执行?谢谢!

4

3 回答 3

7

这里绝对没有区别。

AFAIK确实有所作为的一个地方是当您在控制台上评估对象文字时

于 2012-09-20T09:03:44.597 回答
2

他们什么都不做 :) 他们是为了可读性而存在的,尽管他们是否实现了这个目标是值得怀疑的。

于 2012-09-20T09:03:55.220 回答
2

按照我的说法,我们应该使用方括号来收集对象。因为,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}]
于 2012-09-20T09:34:37.320 回答