JavaScript——运算符的优先级和结合性

目录

任务描述

相关知识

运算符的优先级

运算符的结合性

编程要求

任务描述

本关任务:我们将给出函数mainJs()的完整代码,要求在函数体内第三句以及第五句中添加适当的括号,实现编程要求里面的要求。

要想完成本关任务,必须熟悉运算符的优先级和结合性,请阅读下面的相关知识。

相关知识

运算符的优先级

JavaScript 中运算符的优先级和数学中运算符的优先级意思相同,优先级高的运算符比优先级低的运算符先计算,例如数学中1+2*3算式,先计算2*3,结果再与1相加,所以乘法的优先级高于加法,在 JavaScript 中,不同的优先级也是这个作用。

下面是常见的运算符的优先级:

分类运算符含义结合性
1++前后增量R
1--前后减量R
1逻辑非R
2* / %乘 除 求余L
3+ -加减L
4< <= > >=比较数字顺序L
4in测试属性是否存在L
5==判断相等L
5!=判断不等L
6&按位与L
7&&逻辑与L
8?:条件运算符R
9=赋值R
9+= -= *= /= %=运算且赋值R
10,忽略第一个操作数L

从上到下优先级逐渐降低。第一栏数字相同的运算符优先级相同,对于这个表格,不需要全部记住,但是常见的需要记住,比如加减乘除的优先级高于比较运算符,赋值运算符的优先级几乎是最低的,下面给出例子帮助理解:

var a = 1;
var b = 2;
var c = ++a+b;

因为++的优先级高于+,所以上面的第三个句子等价于:

var c = (++a)+b;

运算符的结合性

运算符的优先级是针对不同优先级的运算符来说的,对于同一级的运算符,运算顺序取决于运算符的结合性,比如加法和减法的优先级相同,而加法和减法都是从左向右结合,所以a+b-c式中,会先计算a+b,即按照阅读的顺序计算。

也有很多运算符是从右到左结合的,比如取反、逻辑非。

上面图中的第三栏就是结合性,R 表示从右向左结合,L 表示从左到右结合,从左向右的占多数,这和我们在数学中的习惯相同。

var d = a*b/c;    // 先计算乘法后计算除法
var aa = 2;
var bb = 3;
var cc = aa *= bb;    // 先计算aa*=bb,再把结果赋值给cc,为6

上面第一个式子是从左到右结合,第四个式子是从右到左结合。 分别等价于:

var d = (a*b)/c;
var cc = (aa *= bb);

编程要求

本关的编程任务是补全右侧代码片段中 Begin 至 Eend 中间的代码,在函数体内第三句以及第五句添加适当的括号,以实现如下功能:

  • 参数 a 先减去1,所得差再与参数 b 相加,然后将结果再与 b 相乘;

  • 上面的结果为24则给参数 c 赋值1,否则赋值0;

  • 计算 c 与 d 的积,这个积再与参数 d 求和,所得结果赋值给参数 e;

  • 函数参见下面的测试说明部分。

本关涉及的代码文件Priority.js的代码框架如下:

function mainJs(a,b) {
    var a = parseInt(a);
    var b = parseInt(b);
    // 请在此处编写代码
    /********** Begin **********/
    var c = --a+b*b==24?1:0;
    var d = 4;
    var e = c*=d+d;
    /********** End **********/
    return e;
}

答案

function mainJs(a,b) {
    var a = parseInt(a);
    var b = parseInt(b);
    // 请在此处编写代码
    /********** Begin **********/
    var c = (--a+b)*b==24?1:0;
    var d = 4;
    var e = (c*=d)+d;
    /********** End **********/
    return e;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值