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