Java Script从入门到精通(第5版)
上QQ阅读APP看书,第一时间看更新

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,计算这块梯形稻田的面积。