【问题标题】:why are objects wrapped in parenthesis in JS?为什么对象在 JS 中用括号括起来?
【发布时间】:2012-09-12 14:58:14
【问题描述】:

举个例子:

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

与以下相比有什么区别:

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

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

【问题讨论】:

  • 没有区别。在这两种情况下typeof(foo.root) 返回object 但我从未见过第一种语法
  • 有趣,不知道你能做到这一点,我认为没有区别。想知道其他人对此有什么看法。
  • 我盯着这两个例子看了半分钟,然后不得不阅读文本才能真正看到区别。好问题!
  • 这能回答你的问题吗? Parentheses in an object literal

标签: javascript parentheses


【解决方案1】:

这里绝对没有区别。

AFAIK 真正发挥作用的一个地方就是当你evaluate an object literal on the console时。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      在我看来,我们应该使用方括号来收集对象。因为,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}]
      

      【讨论】:

        猜你喜欢
        • 2015-09-08
        • 1970-01-01
        • 2011-08-14
        • 2010-12-13
        • 2020-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多