Why operator inside parenthesis changes `this` in function call(为什么圆括号内的运算符在函数调用中更改为`this`)
问题描述
谈话很便宜;请给我看代码。
()
和comma operator
,正如您在最后一条语句中看到的那样,comma operator
做了一些奇怪的事情。我怀疑它在返回值时执行赋值(因为如果我们执行赋值也会产生相同的结果),但我不确定。
更新:
&&
、||
运算符:(0 || obj.fn)()
推荐答案
给定:
内部bar
,this
将为foo
。
(有例外,例如bar
是用箭头函数定义的,但在这种情况下不适用)。
给定:
现在已在没有foo
上下文的情况下调用了函数,因此this
现在是默认对象(在浏览器中为window
)。
表达式:(1, foo.bar)
计算为右侧。这就是函数。
就像您已将其复制到变量一样,这会在您调用函数之前断开它与对象的连接,因此您将获得相同的效果。
没有赋值,因为您没有涉及变量,但您调用的是表达式的结果,而不是直接调用对象方法。
这篇关于为什么圆括号内的运算符在函数调用中更改为`this`的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!