这是什么JavaScript语法?

时间:2016-04-19 23:32:30

标签: javascript redux

这是Redux.js的一个示例我正在github上。有人可以解释一下这里使用的语法吗?

var currentListeners = []
var nextListeners = currentListeners

....
someFunc() {

// THIS:
var listeners = currentListeners = nextListeners
for (var i = 0; i < listeners.length; i++) {
    listeners[i]()
}
.....
}

多分配和陈述是否独立?这可以解释它。但是在任务结束时丢失的分号是什么? 良好做法/不良做法?

2 个答案:

答案 0 :(得分:3)

赋值运算符求值为已分配的内容(实际上是右操作数)。作为副作用,它更新左操作数的值。所以a = b = c将c的值赋值给b,求值为c,然后将c的值赋值给a,并求值为c。

作业是右关联的 - 它从右到左分组。

此外,如果每个语句都在自己的行上,则语句之间的分号为[semi-]optional(此处缺少一些链接中包含的细节)。

最后,这里发生的一件有趣的事情是分配一个声明一个范围的变量。 Javascript中的函数是声明新范围的一种方法。请注意,如果只是在您的代码段中定义了该功能,则在调用该函数之前,它不会对currentListeners的值产生影响。

答案 1 :(得分:0)

var listeners = currentListeners = nextListeners

与执行此操作相同:

var currentListeners = nextListeners;
var listeners = currentListeners;

希望这有帮助