javascript学习笔记——JS运算符

一、JS运算符

  1. 运算符:(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。

    • JavaScript中常用的运算符:
      • 算数运算符
      • 递增和递减运算符
      • 比较运算符
      • 逻辑运算符
      • 赋值运算符
  2. 算数运算符(+ , - , * , / , %

    • 直接用浮点数进行算数运算可能会出现问题,浮点数的精度问题,浮点数值的最高精度为17个小数,但在进行算数运算时其精确度远远不如小数。
      1
      console.log(3.4+1.2);   //得到的结果是 0.30000000000000004
    • 表达式与返回值
      • 表达式:是由数字,运算符,变量等以能求得数值的有意义排列方法所得的组合。(由数字,运算符,变量组成的式子)。
      • 返回值:表达式最终都有一个结果返回给我们,我们称为返回值。
  3. 递增和递减运算符

    • 递增(++)
      • 放在变量前面时为前置递增运算符(++age类似于 age=age+1)先自加1,后返回值
      • 放在变量后面时称为后置递增运算符 先返回原值,后自加1
    • 递减(–)
      • 放在变量前面时为前置递减运算符 先自减1,后返回值
      • 放在变量后面时称为后置递减运算符 先返回原值,后自减1
  4. 比较运算符

    • 比较运算符:是两个运算符进行比较时所使用的运算符,比较运算后会返回一个布尔值(true/false)作为比较运算的结果。
      运算符名称 说明 案例 结果
      < 小于号 1<2 true
      > 大于号 1>2 false
      >= 大于等于号 2>=2 true
      <= 小于等于号 3<=2 false
      == 判等号 12==12 true
      != 不等号 12!=12 false
      === !== 全等,要求值和数据类型都一致 12===’12’ false
  5. 逻辑运算符

    • 与(&&)
    • 或(||)
    • 非( ! )
    • 短路运算(逻辑中断):当多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值。
  6. 赋值运算符

    • = , += , -= , *= , /= , %=
  7. 运算符优先级

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

二、JavaScript流程控制——分支

  1. 流程控制:就是来控制我们的代码按照什么结构顺序来执行

  2. 流程控制的3种结构:顺序结构,分支结构和循环结构

  3. 顺序流程控制

    • 顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
  4. 分支流程控制

    • 由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果。

    • JS语言提供了两种分支语句:if语句,switch语句

    • if语句:

      1
      2
      3
      4
      5
      if(){

      }else{

      }
    • 三元表达式

      • 语法结构:条件表达式?表达式1 : 表达式2
      • 如果条件为真,则返回 表达式1 的值 ,若条件为假则 返回 表达式2的值
        1
        2
        var num=10;
        var result=num>5 ? '是的' : '不是的'; //结果为 '是的'
    • switch语句:

      • break 若前面的case没有添加break, 则不会退出,继续执行下一个case,不论值是否相等。
      • 表达式的值和value的值是全等关系,数据类型相等,数值相等。
      • 代码示例:
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
                switch(表达式){
        case value1:
        执行语句1; break;
        case value2:
        执行语句2; break;
        ......
        default:
        执行最后的语句;
        }

        var grade=prompt("请输入你的成绩");
        switch(grade%10){
        case 9:
        console.log("优秀"); break;
        case 8:
        console.log("良好"); break;
        case 7:
        console.log("合格"); break;
        default:
        console.log("不合格");
        }
    • switch语句与if else if语句的区别:

      • 一般情况下两个语句可以相互替换
      • switch…case语句通常处理case为比较固定的值的情况,而if…else 语句更加灵活,常用于范围判断。
      • switch语句进行条件判断后直接执行到程序的条件语句,效率更高。 而if …else 语句有几种条件,就得判断多少次。
      • 当分支较少时,if…else语句的执行效率比switch语句高。
      • 当分支较多时,switch语句的执行效率比较高,而且结构更清晰。

三、JavaScript流程控制——循环

  1. 循环的目的:在实际问题中,有许多具有规律的重复操作,因此在程序中要完成这项操作就需要重复执行某些语句。
  2. for循环
    • 在程序中,一组被重复执行的语句被称之为循环体,能否继续重复执行,取决于循环的终止条件。由循环体及循环的终止条件组成的语句,被称之为循环语句
    • for循环主要用于把某些代码循环若干次。
      1
      2
      3
      for(初始条件; 条件表达式; 操作表达式){
      //循环体
      }
  3. 循环嵌套(双重for循环)
  4. while循环
    • while语句可以在条件表达式为真的前提下,循环执行指定的一段代码,直到表达式不为真时结束循环。
    • while循环语法结构
      1
      2
      3
      4
      while(条件表达式)
      {
      //循环体
      }
  5. do while循环
    • do…while循环语句其实是while循环语句的一个变体,该循环会先执行一次代码块,然后对条件表达式进行判断,如果为真就会重复执行循环体,否则就会退出循环。
    • do… while循环语法结构
      1
      2
      3
      dd{
      //循环体
      }while(条件表达式);
  6. continue break
    • continue关键字用于立即跳出本次循环,继续下一次循环(本次循环体中continue之后的代码就会少执行一次)。
    • 代码示例
      1
      2
      3
      4
      5
      6
      7
      8
      9
              for(var i=1;i<=5;i++)
      {
      if(i==3){continue;}
      console.log('循环下执行'+i);
      }
      // 循环下执行1
      //循环下执行2
      // 循环下执行4
      // 循环下执行5
    • beak关键字
      • break关键字用于立即跳出循环(循环结束)
      • 示例代码
        1
        2
        3
        4
        5
        6
        7
                  for(var i=1;i<=5;i++)
        {
        if(i==3){break;}
        console.log('循环下执行'+i);
        }
        // 循环下执行1
        //循环下执行2