上QQ阅读APP看书,第一时间看更新
2-20 关于运算符的优先级与结合性
在任何编程语言中,运算符的优先级与结合性都是一个老生常谈的话题。小学数学老师都一遍遍地告诉过我们“先乘除,后加减”的法则。在ECMAScript语法中,也遵守类似的法则。例如如下表达式计算的值是22而不是28:
所谓运算符的优先级,是指不同运算符在同一个表达式中执行运算的先后顺序。优先级高的运算符将优先被执行运算,例如上面示例代码中的“*”运算符的优先级要高于“+”运算符,因此先进行乘法运算,再进行加法运算。
除了“优先级”的概念外,运算符还有“结合性”概念。对于优先级相同的运算符,“结合性”决定了其表达式中运算的执行顺序,结合性分为左结合性和右结合性,左结合性的运算符将从左向右依次执行,右结合性的运算符将从右向左依次执行,示例如下:
常用运算符的优先级与结合性如表2-6所示。
表2-6 运算符的优先级与结合性
来看一个小例子,你能猜出下面代码的计算结果吗?
无论你对运算符的优先级与结合性记忆如何,给你一个建议:如果有控制运算顺序的必要,请强制使用小括号,一目了然,省时省心。