我正在审核一些代码,但无法弄清楚这意味着什么:
(attrs = {})[key] = val;
key
和val
都是字符串变量。
它是if条件的快捷方式吗?对象声明?
答案 0 :(得分:4)
(attrs = {})[key] = val;
相当于
attrs = {};
attrs[key] = value;
也就是说,表达式中的变量赋值首先发生,然后通过正常的属性赋值修改对象(赋值的结果)。
我个人会在这里使用后一种形式。
答案 1 :(得分:1)
与数学相似,在javascript中,()
中发生的任何事情都会先发生。例外是函数定义,严格用于声明。
由()
表示的表达式将在其余代码之前执行并返回值。这用于多个位置,例如立即执行函数表达式,或者在逗号用于在表达式中构建返回值的位置。
在您的情况下,(attrs = {})
表达式将返回一个对象,同时还将该对象分配给变量attrs。下一个代码将对返回的对象执行操作,通过[]
处的key
表示法访问对象的属性,然后将其分配给value
。