Javascript括号格式

Javascript括号格式,javascript,object,syntax,parentheses,Javascript,Object,Syntax,Parentheses,对于Javascript中的以下括号格式,我有点困惑: (listeners = {})[obj._listenerId] = obj; 当一个对象被括号包围时,它意味着什么 以下内容也一样 ({ value: "\\abc" }) 另一个问题是-仅包含此代码的文件的含义是什么? 谢谢 Mary在第一种情况下,括号简单而经典地用于更改执行顺序,因为使用括号表示法访问属性的优先级高于赋值。它使赋值首先发生 因此,您的线路相当于 listeners = {}; listeners[obj

对于Javascript中的以下括号格式,我有点困惑:

(listeners = {})[obj._listenerId] = obj;
当一个对象被括号包围时,它意味着什么

以下内容也一样

 ({
  value: "\\abc"
 })
另一个问题是-仅包含此代码的文件的含义是什么? 谢谢
Mary

在第一种情况下,括号简单而经典地用于更改执行顺序,因为使用括号表示法访问属性的优先级高于赋值。它使赋值首先发生

因此,您的线路相当于

listeners = {};
listeners[obj._listenerId] = obj;

在第二种情况下,如果没有更多的代码很难判断,但是这些括号可能是用来避免解析器认为它是一个代码块。此表达式返回一个文本对象。

在第一种情况下,括号简单而经典地用于更改执行顺序,因为使用括号表示法访问属性的优先级高于赋值。它使赋值首先发生

因此,您的线路相当于

listeners = {};
listeners[obj._listenerId] = obj;

在第二种情况下,如果没有更多的代码很难判断,但是这些括号可能是用来避免解析器认为它是一个代码块。此表达式返回文字对象。

使用括号,以便首先计算括号内的部分。
例如,(listeners={})将返回新的listeners空对象。

使用括号,以便首先计算其中的部分。 例如,(listeners={})将返回新的listeners空对象。

括号是空对象。使用它们可以更改表达式的求值顺序

What
(侦听器={})[obj.\u listenerId]=obj所做的是:

  • 将空对象分配给
    侦听器
  • 将值
    obj
    分配给该对象的属性
    obj.\u listenerId
  • 如果没有括号,表达式的计算结果如下(这里我使用括号只是为了强调计算顺序):

    i、 e

  • obj
    分配给空对象的属性
    obj.\u listenerId
  • obj
    赋值给
    侦听器
    (赋值表达式的结果就是赋值)

  • 我打赌你已经从数学表达式中知道分组运算符了<代码>1+2*3
    将导致
    7
    。但是
    (1+2)*3是
    9
    <代码>*
    的优先级高于
    +
    ,您可以通过分组更改优先级

    MDN按其优先级顺序提供了一个新的名称。

    括号是最新的名称。使用它们可以更改表达式的求值顺序

    What
    (侦听器={})[obj.\u listenerId]=obj所做的是:

  • 将空对象分配给
    侦听器
  • 将值
    obj
    分配给该对象的属性
    obj.\u listenerId
  • 如果没有括号,表达式的计算结果如下(这里我使用括号只是为了强调计算顺序):

    i、 e

  • obj
    分配给空对象的属性
    obj.\u listenerId
  • obj
    赋值给
    侦听器
    (赋值表达式的结果就是赋值)

  • 我打赌你已经从数学表达式中知道分组运算符了<代码>1+2*3
    将导致
    7
    。但是
    (1+2)*3是
    9
    <代码>*
    的优先级高于
    +
    ,您可以通过分组更改优先级


    MDN按其优先级顺序提供了一个符号。

    这是一个简短的符号:

    listeners = {};
    listeners[obj._listenerId] = obj;
    
    您可以尝试以下方法:

    (sameObj={})['key']='value';
    console.log(sameObj)
    

    这是一个简短的符号:

    listeners = {};
    listeners[obj._listenerId] = obj;
    
    您可以尝试以下方法:

    (sameObj={})['key']='value';
    console.log(sameObj)
    

    谢谢这回答了第一部分。您是否有一个在JavaScript中指定此语法的链接?如果您想要一个关于使用括号分隔表达式(从而更改执行顺序)的链接,Felix提供的链接可能很好。谢谢!这回答了第一部分。您是否有一个在JavaScript中指定此语法的链接?如果您想要一个关于使用括号分隔表达式(从而更改执行顺序)的链接,Felix提供的链接可能很好。“仅包含此代码的文件的含义是什么?”它没有特定的含义。它看起来有点像一个中断的函数调用,例如没有函数名的JSONP。第二个示例是一个附加到mustache.js框架的文件,名为backslashes.js-还有其他类似的示例,它们所做的只是用括号包装对象声明。然后,它可能只是用来作为JavaScript计算文件。如果没有括号,
    {…}
    将作为块而不是对象文本进行计算,并且它将抛出语法错误。它还是分组运算符,但用于确保“内容”作为表达式进行计算。它不是用来改变求值顺序的。这个表达式怎么用?我不知道。这些文件似乎是mustache.js单元测试的一部分,单元测试与Node.js一起运行。我不担心它们是如何使用的。“只包含此代码的文件的含义是什么?”它没有特定的含义。它看起来有点像一个中断的函数调用,例如没有函数名的JSONP。第二个示例是一个附加到mustache.js框架的文件,名为backslashes.js-还有其他类似的示例,它们所做的只是用括号包装对象声明。然后,它可能只是用来作为JavaScript计算文件。如果没有括号,
    {…}
    将作为块而不是对象文本进行计算,并且它将抛出语法错误。它还是分组运算符,但用于确保“内容”作为表达式进行计算。它不是用来改变求值顺序的。这个表达式怎么用?我不知道。这些文件似乎是必须的一部分