2.3.8 运算符的优先级与结合性
JavaScript中的运算符都有明确的优先级与结合性。优先级较高的运算符将先于优先级较低的运算符进行运算;结合性则是指具有同等优先级的运算符将按照怎样的顺序进行运算。JavaScript中运算符的优先级与结合性如表2.9所示。
表2.9 JavaScript运算符的优先级与结合性
例如,下列代码显示了运算符优先级的作用。
var a; //声明变量 a = 10-(2+3)<5&&7>6; //为变量赋值 alert(a); //输出变量的值
执行上述代码,结果如图2.16所示。
图2.16 优先级示例输出结果
当在表达式中连续出现的几个运算符优先级相同时,其运算的优先顺序由其结合性决定。结合性有向左结合和向右结合两种。例如,运算符“+”是向左结合的,在计算表达式“a+b+c”的值时,会先计算“a+b”,即“(a+b)+c”;而赋值运算符“=”是向右结合的,在计算表达式“a=b=1”的值时,会先计算“b=1”。下列代码说明了“=”的向右结合性。
var a = 1; //声明变量并赋值 b=a=10; //对变量b赋值 alert("b="+b); //输出变量b的值
执行上述代码,结果如图2.17所示。
图2.17 结合性示例输出结果
【例2.11】运算符优先级的使用。(实例位置:资源包\TM\sl\2\11)
假设手机原来的话费余额是10元,通话资费为0.1元/min,流量资费为0.3元/MB,在使用了30 MB流量后,计算手机话费余额还可以进行多长时间的通话,代码如下。
<script type="text/javascript"> var balance = 10; //定义手机话费余额变量 var call = 0.1; //定义通话资费变量 var traffic = 0.3; //定义流量资费变量 var minutes = (balance-traffic*30)/call; //计算余额可通话分钟数 document.write("手机话费余额还可以通话"+minutes+"min"); //输出字符串 </script>
执行上述代码,结果如图2.18所示。
图2.18 输出手机话费余额可以进行通话的分钟数
编程训练(答案位置:资源包\TM\sl\2\编程训练)
【训练5】计算本息合计 假设某银行定期存款3年的年利率为2.75%,某客户的存款金额为100 000元,计算该客户存款3年后的本息合计是多少。(提示:本息合计=存款金额+存款金额*年利率*存款期限)
【训练6】判断考试成绩是否及格 考试成绩达到60分以上表示及格。周星星的英语考试成绩是65分,使用条件运算符判断该考试成绩是否及格。
【训练7】计算梯形稻田的面积 有一块梯形稻田,稻田上边缘长为30 m,下边缘长为50 m,高度为30 m,计算这块梯形稻田的面积。