逗号操作符有两个作用,一个是用于当你想要在期望一个表达式的位置包含多个表达式时,可以使用逗号操作符。这个操作符最常用的一种情况是:for 循环中提供多个参数。另一个使用逗号操作符的例子是在返回值前处理一些操作。如同下面的代码,只有最后一个表达式被返回,其他的都只是被求值。
关于逗号的第二个用法,有时会引起一些现象,比如下面的代码就改变了函数中的this指向,因为表达式 (0 obj.fun) 返回了 obj.fun 的引用,相当于 window 调用这个函数,所以 this 发生了变化:
我的赋值是可以用链式的方法把一个值赋值给多个变量,当所有变量都被声明,这样做并没有什么问题,但是如果是函数作用域内这样做有时候会引起一些奇怪的现象:
从结果我们可以看出 b 成为了一个全局变量,要明白原因我们先要知道 js引擎是如何解析 a = b =3; 这条表达式的,我们知道赋值是基于右值的值给左值赋值。变量声明提前不能跨