![现代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=1739294239-d7QsbBXSFwl7kkaBcktXEmIlnfYc4GU1-0-36894337a01a528b7f1a6d0120c318d7)
所谓运算符的优先级,是指不同运算符在同一个表达式中执行运算的先后顺序。优先级高的运算符将优先被执行运算,例如上面示例代码中的“*”运算符的优先级要高于“+”运算符,因此先进行乘法运算,再进行加法运算。
除了“优先级”的概念外,运算符还有“结合性”概念。对于优先级相同的运算符,“结合性”决定了其表达式中运算的执行顺序,结合性分为左结合性和右结合性,左结合性的运算符将从左向右依次执行,右结合性的运算符将从右向左依次执行,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P59_67309.jpg?sign=1739294239-kH7jikYoEs8WU0VAfFFNSA7JzHirLjva-0-b1d6945afa002c965c84f50728333d31)
常用运算符的优先级与结合性如表2-6所示。
表2-6 运算符的优先级与结合性
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-T60_67311.jpg?sign=1739294239-x46FDT91VjPQgz9TZgp0B7ydC2xHR6nK-0-8844b41bfa9309d42766a067234e037b)
来看一个小例子,你能猜出下面代码的计算结果吗?
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P61_67313.jpg?sign=1739294239-sZoyqVXDT0WEVKgXeWuIghO3lVf8oBcM-0-b0699fe4d2d35c686dec1d5e371e1c47)
无论你对运算符的优先级与结合性记忆如何,给你一个建议:如果有控制运算顺序的必要,请强制使用小括号,一目了然,省时省心。