我尝试根据运算符优先级来评估表达式,并得到了令人困惑的结果。
这是表达式:a.b(c).d(e,f)。
它由成员访问和函数调用运算符组成。
根据MDN OperatorPrecedence table
成员访问运算符具有从左到右的关联性,并且比函数调用运算符具有更高的优先级。
因此,在上面的表达式中,第二个成员访问必须在第一个函数调用之前发生。
那我想念的是什么?
最佳答案
成员访问运算符具有从左到右的关联性,并且比函数调用运算符具有更高的优先级。
这仅表示a.b(c)
被评估为(a.b)(c)
,而不是a.(b(c))
(无论如何都无效)。
所以在上面的表达式中第二个成员访问必须在第一个函数cal之前发生
怎么可能foo().bar
表示访问函数调用返回值的属性bar
。如果必须在调用之前进行访问,应该访问哪个属性?
还是在您的示例中,应该在哪个对象上访问.d
? a
? a.b
?
关于javascript - 运营商执行顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34004013/