迷惑JavaScript语法

时间:2014-04-15 22:14:57

标签: javascript

我正在审核一些代码,但无法弄清楚这意味着什么:

(attrs = {})[key] = val;

keyval都是字符串变量。

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

2 个答案:

答案 0 :(得分:4)

(attrs = {})[key] = val;

相当于

attrs = {};
attrs[key] = value;

也就是说,表达式中的变量赋值首先发生,然后通过正常的属性赋值修改对象(赋值的结果)。

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

答案 1 :(得分:1)

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

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

在您的情况下,(attrs = {})表达式将返回一个对象,同时还将该对象分配给变量attrs。下一个代码将对返回的对象执行操作,通过[]处的key表示法访问对象的属性,然后将其分配给value