Comma operator(逗号操作符)

在知乎上看到这样一个问题

请教一下,js的这种写法是怎么回事?

研究了下,,是逗号操作符,通过它可以隔开各个表达式(exp1, exp2, exp3),返回的是最后一个表达式的值

所以看下面代码

var a = {
x: function () {
console.log(this)
}
}

下面两个表达式

(0, a['x'])() // window
(a['x']() // a

返回的值是不一样的,这也是逗号操作符的“功劳”

其实第一个表达式类似于

var back = a['x']
back()

自然this指向的上下文是不一样的

分享