JavaScript 运算符和流程控制

2021/2/2

# 算术运算符

        console.log(1 + 1); // 2
        console.log(1 - 1); // 0
        console.log(1 * 1); // 1
        console.log(1 / 1); // 1

        // 1. % 取余 (取模)  
        console.log(4 % 2); // 0
        console.log(5 % 3); // 2
        console.log(3 % 5); // 3

        // 2. 浮点数 算数运算里面会有问题
        console.log(0.1 + 0.2); // 0.30000000000000004
        console.log(0.07 * 100); // 7.000000000000001

        // 3. 不能直接拿着浮点数来进行相比较 是否相等
        var num = 0.1 + 0.2;
        console.log(num == 0.3); // false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 表达式和返回值

        //  是由数字、运算符、变量等组成的式子 我们成为表达式   1 + 1 
        console.log(1 + 1); // 2 就是返回值
        // 1 + 1 = 2
        // 在程序里面  2 = 1 + 1   把我右边表达式计算完毕把返回值给左边
        var num = 1 + 1;
1
2
3
4
5

# 递增和递减运算符

# 前置递增递减

  • 前置递增
        // 前置递增运算符  ++ 写在变量的前面
        var age = 10;
        ++age; // 类似于 age = age + 1
        console.log(age);
        //  先加1  后返回值 (先加再返回)
        var p = 10;
        console.log(++p + 10); //21

1
2
3
4
5
6
7
8
  • 后置递增
         var num = 10;
        num++; // num = num + 1    ++num;
        console.log(num);
        // 1. 前置自增和后置自增如果单独使用 效果是一样的
        // 2. 后置自增 口诀:先返回原值 后自加1 
        var age = 10;
        console.log(age++ + 10);//20
        console.log(age);//11
1
2
3
4
5
6
7
8

例子

        var a = 10;
        ++a; // ++a  11    a = 11
        var b = ++a + 2; // a = 12   ++a = 12
        console.log(b); // 14

        var c = 10;
        c++; // c++ 11  c = 11
        var d = c++ + 2; //  c++  = 11     c = 12
        console.log(d); // 13

        var e = 10;概念:比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值
        var f = e++ + ++e; // 1. e++ =  10  e = 11  2. e = 12  ++e = 12
        console.log(f); // 22
        // 后置自增  先表达式返回原值 后面变量再自加1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 比较运算符

比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值( true / false )作为比较运算的结果。

        console.log(3 >= 5); // false
        console.log(2 <= 4); // true
        //1. 等于符号 是 ==  默认转换数据类型 会把字符串型的数据转换为数字型 只要求值相等就可以
        console.log(3 == 5); // false
        console.log('送报少年' == '帅哥'); // flase
        console.log(18 == 18); // true
        console.log(18 == '18'); // true
        console.log(18 != 18); // false
        // 2. 全等要求 两侧的值 还有 数据类型完全一致才可以 true
        console.log(18 === 18);
        console.log(18 === '18'); // false
    </script>
1
2
3
4
5
6
7
8
9
10
11
12

# 逻辑运算符

        // 1. 逻辑与 &&  and 两侧都为true  结果才是 true  只要有一侧为false  结果就为false 
        console.log(3 > 5 && 3 > 2); // false
        console.log(3 < 5 && 3 > 2); // true
        // 2. 逻辑或 || or  两侧都为false  结果才是假 false  只要有一侧为true  结果就是true
        console.log(3 > 5 || 3 > 2); // true 
        console.log(3 > 5 || 3 < 2); // false
        // 3. 逻辑非  not  ! 
        console.log(!true); // false
1
2
3
4
5
6
7
8

# 短路运算(逻辑中断)

当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值

# 逻辑与

表达式1 &&表达式2

  • 如果第一个表达式的值为真 ,则返回表达式2
  • 如果第一个表达式的值为假,则返回表达式1
        //  用布尔值参与的逻辑运算  true && false  == false 
        //  123 && 456  是值 或者是 表达式 参与逻辑运算? 
        //  逻辑与短路运算  如果表达式1 结果为真 则返回表达式2  如果表达式1为假 那么返回表达式1
        console.log(123 && 456); // 456
        console.log(0 && 456); //  0
        console.log(0 && 1 + 2 && 456 * 56789); // 0
        console.log('' && 1 + 2 && 456 * 56789); // ''
        // 如果有空的或者否定的为假 其余是真的  0  ''  null undefined  NaN
1
2
3
4
5
6
7
8
# 逻辑或

表达式1 || 表达式2

  • 如果第一个表达式的值为真 ,则返回表达式1
  • 如果第一个表达式的值为假,则返回表达式2
        // 逻辑或短路运算  如果表达式1 结果为真 则返回的是表达式1 如果表达式1 结果为假 则返回表达式2
        console.log(123 || 456); // 123
        console.log(123 || 456 || 456 + 123); // 123
        console.log(0 || 456 || 456 + 123); // 456
        // 逻辑中断很重要 会影响程序运行结果
        var num = 0;
        console.log(123 || num++);
        console.log(num); // 0
1
2
3
4
5
6
7
8

# 赋值运算符

=,+=,-=,*=,/=先运算再赋值

        var num = 10;
        // num = num + 1;   num++
        // num = num + 2; // num += 2;
        // num += 2;
        num += 5;
        console.log(num);
        var age = 2;
        age *= 3;
        console.log(age);
1
2
3
4
5
6
7
8
9

# 运算符优先

优先级 运算符 顺序
1 小括号 ()
2 一元运算符 ++ -- !
3 算术运算符 先 * / %后 + -
4 关系运算符 > >= < <=
5 相等运算符 == = === !==
6 逻辑运算符 &&
7 赋值运算符 =
8 逗号运算符 ,

# 流程控制

# if分支语句

        // if 的语法结构   如果if


        // if (条件表达式) {
        //     // 执行语句
        // }

        // 执行思路  如果 if 里面的条件表达式结果为真 true 则执行大括号里面的 执行语句 
        // 如果if 条件表达式结果为假 则不执行大括号里面的语句 则执行if 语句后面的代码
        
        
        // 代码体验
        if (3 < 5) {
            alert('送报少年');
        }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# ifelse双分支语句

        // 1. 语法结构  if 如果  else 否则
        // if (条件表达式) {
        //     // 执行语句1
        // } else {
        //     // 执行语句2 
        // }
        // 2. 执行思路 如果表达式结果为真 那么执行语句1  否则  执行语句2
        // 3. 代码验证
        var age = prompt('1+1=:');
        if (age == 2) {
            alert('正确');
        } else {
            alert('错误');
        }
        // 5. if里面的语句1 和 else 里面的语句2 最终只能有一个语句执行  2选1
        // 6.  else 后面直接跟大括号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# ifelseif多分支语句

        // 1. 多分支语句   就是利用多个条件来选择不同的语句执行 得到不同的结果  多选1 的过程
        // 2. if else if语句是多分支语句
        // 3. 语法规范
        if (条件表达式1) {
            // 语句1;
        } else if (条件表达式2) {
            // 语句2;
        } else if (条件表达式3) {
            // 语句3;
        } else {
            // 最后的语句;
        }
        // 4. 执行思路
        // 如果条件表达式1 满足就执行 语句1 执行完毕后,退出整个if 分支语句  
        // 如果条件表达式1 不满足,则判断条件表达式2  满足的话,执行语句2 以此类推
        // 如果上面的所有条件表达式都不成立,则执行else 里面的语句
        // 5. 注意点
        // (1) 多分支语句还是多选1 最后只能有一个语句执行
        // (2) else if 里面的条件理论上是可以任意多个的
        // (3) else if 中间有个空格了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 三元表达式

        // 1. 有三元运算符组成的式子我们称为三元表达式
        // 2. ++num     3 + 5     ? :
        // 3. 语法结构 
        // 条件表达式 ? 表达式1 : 表达式2
        // 4. 执行思路
        // 如果条件表达式结果为真 则 返回 表达式1 的值 如果条件表达式结果为假 则返回 表达式2 的值
        // 5. 代码体验
        var num = 10;
        var result = num > 5 ? '是的' : '不是的'; // 我们知道表达式是有返回值的
        console.log(result);
        // if (num > 5) {
        //     result = '是的';
        // } else {
        //     result = '不是的';
        // }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# switch分支语句

        // 1. switch 语句也是多分支语句 也可以实现多选1
        // 2. 语法结构 switch 转换、开关  case 小例子或者选项的意思
        // switch (表达式) {
        //     case value1:
        //         执行语句1;
        //         break;
        //     case value2:
        //         执行语句2;
        //         break;
        //         ...
        //         default:
        //             执行最后的语句;
        // }
        // 3. 执行思路  利用我们的表达式的值 和 case 后面的选项值相匹配 如果匹配上,就执行该case 里面的语句  如果都没有匹配上,那么执行 default里面的语句
        // 4. 代码验证
        switch (8) {
            case 1:
                console.log('这是1');
                break;
            case 2:
                console.log('这是2');
                break;
            case 3:
                console.log('这是3');
                break;
            default:
                console.log('没有匹配结果');

        }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

注意:
1.开发里面 表达式我们经常写成变量 2.num 的值 和 case 里面的值相匹配的时候是 全等 === 必须是值和数据类型一致才可以 3. break 如果当前的case里面没有break 则不会退出switch 是继续执行下一个case

Last Updated: 2021/12/19上午12:27:30