![现代JavaScript编程:经典范例与实践技巧](https://wfqqreader-1252317822.image.myqcloud.com/cover/657/26793657/b_26793657.jpg)
上QQ阅读APP看书,第一时间看更新
2-20 关于运算符的优先级与结合性
在任何编程语言中,运算符的优先级与结合性都是一个老生常谈的话题。小学数学老师都一遍遍地告诉过我们“先乘除,后加减”的法则。在ECMAScript语法中,也遵守类似的法则。例如如下表达式计算的值是22而不是28:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P59_67308.jpg?sign=1739011980-qSBDPnDOsCWYe4CEnGTjxVrH1EEpJnPv-0-42c3b59cab4fb55788cc2d849f307d8c)
所谓运算符的优先级,是指不同运算符在同一个表达式中执行运算的先后顺序。优先级高的运算符将优先被执行运算,例如上面示例代码中的“*”运算符的优先级要高于“+”运算符,因此先进行乘法运算,再进行加法运算。
除了“优先级”的概念外,运算符还有“结合性”概念。对于优先级相同的运算符,“结合性”决定了其表达式中运算的执行顺序,结合性分为左结合性和右结合性,左结合性的运算符将从左向右依次执行,右结合性的运算符将从右向左依次执行,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P59_67309.jpg?sign=1739011980-IFPZF3eQtSnuaE6qT63C1LUSCikfLUhn-0-1a10ec3074ab8c228c24db3bb32898d7)
常用运算符的优先级与结合性如表2-6所示。
表2-6 运算符的优先级与结合性
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-T60_67311.jpg?sign=1739011980-nrdq3gzr8KgvlKElmI2Xul3FpoROoM6w-0-8457a416f38287c80792283a0e029630)
来看一个小例子,你能猜出下面代码的计算结果吗?
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P61_67313.jpg?sign=1739011980-37pHnetNNS7xFzOaOjHqdS81kolYYC9A-0-73e324d3f684a73d52585fcc05e097f4)
无论你对运算符的优先级与结合性记忆如何,给你一个建议:如果有控制运算顺序的必要,请强制使用小括号,一目了然,省时省心。