被JavaScript语法弄糊涂了

被JavaScript语法弄糊涂了,javascript,Javascript,我正在查看一些代码,无法理解这意味着什么: (attrs={})[key]=val key和val都是字符串变量 这是if条件的快捷方式吗?对象声明 (attrs = {})[key] = val; 相当于 attrs = {}; attrs[key] = value; 也就是说,表达式中的变量赋值首先发生,然后通过普通属性赋值修改对象(赋值的结果) 我个人会在这里使用后一种形式 相当于 attrs = {}; attrs[key] = value; 也就是说,表达式中的变量赋值首先发生,

我正在查看一些代码,无法理解这意味着什么:

(attrs={})[key]=val

key
val
都是字符串变量

这是if条件的快捷方式吗?对象声明

(attrs = {})[key] = val;
相当于

attrs = {};
attrs[key] = value;
也就是说,表达式中的变量赋值首先发生,然后通过普通属性赋值修改对象(赋值的结果)

我个人会在这里使用后一种形式

相当于

attrs = {};
attrs[key] = value;
也就是说,表达式中的变量赋值首先发生,然后通过普通属性赋值修改对象(赋值的结果)


我个人会在这里使用后一种形式。

类似于数学,在javascript中,在
()
中发生的任何事情都会首先发生。例外情况是函数定义中严格用于声明

()
表示的表达式将在代码的其余部分之前执行,并返回其中的值。这可用于多个位置,例如立即执行的函数表达式,或用于在表达式中使用逗号构建返回值的位置


在您的例子中,
(attrs={})
表达式将返回一个对象,同时还将该对象分配给变量attrs。下一个代码将作用于返回的对象,通过
键处的
[]
符号访问对象的属性,然后将其分配给

类似于数学,在javascript中,
()
中发生的任何事情都将首先发生。例外情况是函数定义中严格用于声明

()
表示的表达式将在代码的其余部分之前执行,并返回其中的值。这可用于多个位置,例如立即执行的函数表达式,或用于在表达式中使用逗号构建返回值的位置


在您的例子中,
(attrs={})
表达式将返回一个对象,同时还将该对象分配给变量attrs。下一个代码将作用于返回的对象,通过
键处的
[]
符号访问该对象的属性,然后将其分配给

,因此换句话说,它声明一个对象,同时将值分配给该对象的一个成员。在我看来,这是一种“聪明”的编程技巧,它节省了几个字符,使代码更难为下一个家伙维护!换句话说,它声明了一个对象,同时为对象的一个成员赋值。在我看来,这是一种“聪明”的编程技巧,它节省了几个字符,使代码更难为下一个家伙维护!