运算符与逻辑分支

100 阅读3分钟

1.运算符有哪些?

1.1.算术运算符

算术运算符
    +,-,*,/,%

    % 取值范围
        Math.random() 生成0-1之间的值,包含0,不包含1 [0,1)
        求取值范围 0|1 %2
        %5 取值范围0-4
        %10 取值范围0-9
        %100 取值范围0-99

1.2.逻辑运算符

逻辑运算符
    && 与 
    || 或
    !  非 取反

短路运算符
    或 || 只找真的,找到真的,就不往后面执行
    与 && 只找假的,找到假的,就不在往后面执行
    && 和 ||

  !取反

1.3.关系运算符

关系运算符
    >,<,>=,<=,==,===,!=,!==(!==不全等于)
    
    = 赋值,右边赋值给左边
    
    == 会隐式转换,它比较的是值,不是类型
    10 == "10"

    === 不会隐式转换,比较的是值与类型

    console.log("10" === 10); //false

    !=

    !== 值跟类型满足一个就是true
        只能是类型相等,或是值相等,只能满足其中的一个就为true

    比较运算符的规则(牢记)
        1.数值与数值比较,直接比较大小
        2.数值与字符串类型的数字比较,字符串转换成数字,再比较大小
        3.字符串与字符串比较,把字符串转换成ASCII码,再进行比较大小

        a ~ z  97 ~ 122
        A ~ Z  65 ~ 90
        0 ~ 9  48 ~ 570

    看见NaN参与比较,就是false

1.4.一元运算符

一元运算符
    a++ 先取值,后运算
    ++a 先运算,后赋值
    a-- 先取值,后运算
    --a 先运算,后赋值

    优先级
    一元 运算符  >  *,/  >  +,-

1.5.三目运算符

三目运算符
    语法:
        表达式 ? 条件1:条件2

    1 == 1 ? true : false;

1.6.赋值运算符

赋值运算符
     +=,-=,*=,/=,%=,=

1.7.位移运算符

位移运算符
    << 左位移 , >> 右位移
    2  2   把第一个2,转换成2进制,再向左边或是右边移动n位,n:就是第二个数
    2  3    把第一个2,转换成2进制,再向左边或是右边移动3位,n:就是第二个数
    2 >> 2等于0, 2 << 2 等于8

1.8.拼接运算符

拼接运算符
    + 左右两边,有一边出现字符,就是拼接

2.表达式的概念

表达式的概念: 
   由运算符和操作数(变量或常量)组成的式子
    `算术运算符`组成的式子叫算术表达式,  如:2+3`关系运算符`组成的式子叫关系表达式或者条件表达式, 如:a>5`逻辑运算符`组成的式子叫做逻辑表达式, 如:a&&b

3.运算符的优先级

image.png

4.逻辑分支

4.1单分支

if单分支
  if条件判断语句的写法: 
       if (表达式){
            执行语句
       }
当括号内的表达式结果成立(为true时),则执行大括号内的语句,否则不执行。

4.2双分支

if双分支语句
    if双分支语句的写法: 
        if(表达式){
	执行语句1
        }
        else{
	执行语句2
        }
当if括号内的表达式结果成立,进入执行语句1,否则进入执行语句2;

4.3多分支

if多分支语句
  if多分支语句的写法: 
        if(表达式){
	执行语句1
        } 
        else if(表达式2){
	执行语句2
        }
        else if(表达式3){
	执行语句3
        }
        else{
	执行语句n
        }

4.4if嵌套

IF的嵌套 
    将整个if语句块插入另一个if语句块中
     if (表达式1) {
         if (表达式2)  {
             if (表达式3){
                   语句;
             } else{
                   语句;
             }
            } else{
              语句;
        }
     }
`注意: 嵌套if时, 内层的每一对if-else代码要缩进且对齐;编写代码时,else要与最近的if配对`

4.5 switch

Switch语句的写法: 
switch(表达式) {
     case 常量1: 语句; break;
     case 常量2: 语句; break;
	…
     case 常量n: 语句; break;
     default:语句; break;
}
     表达式的结果等于哪个case的常量,则执行其后的语句,执行完break就跳出switch结构,都不满足则执行default的语句。
     break的作用:是跳出switch结构,如果没有break,则继续执行下面分支的的语句(而不进行判断)。
注意
    `case穿透,要加break`
        `表达式`的值跟`常量`的值要恒等于,值跟类型一致
   switch的应用场景: 表达式为固定值, 不能判断范围
   
    当case 后面接的是表达式,带有取值范围的
    switch(true)
    例如:
        var x = Number(prompt("请输入您的会员积分!"));
        switch (true) {
            case x < 2000:
                console.log("90%");
                break;
            case 2000 < x && x < 4000:
                console.log(" 80%");
                break;
            case 4000 <= x && x < 8000:
                console.log("70%");
                break;
            default:
                console.log("60%");
                break;
        }

5.程序流程控制

程序的三大流程控制: 
      我们的计算机在执行一个程序的时候,最基本的方式是一条语句接一条语句的执行。
      但不可能所有的问题都能用顺序执行方式就能解决,总会有一些跳转。
      采用结构化的程序设计,可以大大提高开发程序的速度、提高程序的可读性、程序运行的速度和效率。
      结构化程序是由若干个基本结构组合而成,每一个结构可以包含若干条语句和其它基本结构。共有三种基本结构: 
`顺序`:从上朝下执行的代码就是顺序
`分支(选择)`:根据不同的情况,执行对应代码
`循环`:重复做一件事情