js(流程控制)

102 阅读5分钟

语句

表达式和语句

  • 表达式

    • 表达式是一组代码的集合,JavaScript解释器会将其计算出一个结果

    • 计算出一个值

    • 函数表达式

      • let 变量名 = function(){ 函数体 }
  • 语句

    • js 整句或命令,js 语句是以分号结束(可以省略)
    • 用来执行以使某件事发生(做什么事)

程序三大流程控制语句

  • 顺序结构

    • 代码从上往下执行
  • 分支结构

    • 根据条件选择执行代码

    • if分支语句

      • 单分支

        • if(条件){满足条件要执行的代码}
        • 括号内的条件为true时,进入大括号里执行代码
        • 小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型
      • 双分支

        • if(条件){满足条件要执行的代码}else{不满足条件执行的代码}
      • 多分支

        • if(条件1){代码1}else if(条件1){代码2}else if(条件三){代码三}......else{代码n}
      • 子主题 4

    • 三元运算符

      • 三元表达式
      • ? 与 : 配合使用
      • 条件 ? 满足条件执行的代码 : 不满足条件执行的代码
      • 一般用来取值
    • switch语句

      • switch ( 数据) { case 值1: 代码1 break case 值2: 代码2 break default: 代码n break }

      • 找到跟小括号里数据全等的case值,并执行里面对应的代码

      • 若没有全等 的则执行default里的代码

      • 注意

        • Switch case 语句一般用于等值判断,不太适用于区间判断
        • switch case 一边拿配合 break使用,没有break 会造成case穿透
        • switch case比较的值全等 ===
  • 循环结构

    • 某段代码被重复执行

    • 循环三要素

      • 变量起始值
      • 终止条件(没有终止条件,循环会一直执行,造成死循环)
      • 变量变化量(用自增或者自减)
    • while循环

      • while (true) { if (条件) { break; } } // break: 可以用来跳出循环
    • for循环

      • 基本使用

        • 语法

          • for(声明记录循环次数的变量;循环条件;变化值){ 循环体 }
        • for循环优点

          • 把声明起始值、循环条件、变化值写到一起,让人一目了然
      • 循环嵌套

        • 语法

          • for(外部声明记录循环次数的变化;循环条件;变化量){ for(内部声明记录循环次数的变化;循环条件;变化量){ 循环体 } }
      • for循环的最大价值

        • 循环数组
    • for循环和while循环区别

      • for循环

        • 果明确了循环的次数
      • while循环

        • 不明确循环的次数
    • 循环结束(退出)

      • continue

        • 跳出本次循环,继续下次循环
      • break

        • 跳出所在的循环
  • 拓展

    • 断点调试

      • 作用

        • 理解代码运行
        • 可以更快找到bug
      • 步骤

        • 浏览器打开调试界面

          • f12或者fn+f12打开开发者工具(鼠标右键点击检查也行)
          • 点击sources一栏
          • 选择代码文件
        • 断点调试

          • 在代码文件上添加断点
          • 刷新页面
          • 开始逐行调试

      运算符

算术运算符

    • +
    • 求和
    • -
    • 求差
    • *
    • 求积
    • /
    • 求商
  • 取模

    • %

    • 取余数

      • 开发中经常用于某个数字能否被整除
  • 优先级

    • 加减优先级相同
    • 乘除取模优先级相同
    • 乘除取模优先级大于加减
    • 使用小括号()可以提升优先级
    • 优先级越高越先被执行,优先级相同时从左向右执行

赋值运算符

  • =

    • 将等号 = 右边的值赋予给左边, 要求左边必须是一个容器
    • 对变量进行赋值的运算符
  • 其他赋值运算符

    • +=

    • -=

    • *=

    • /=

    • %=

    • 用法举例

      • a = a + 5
      • a += 5
    • 作用

      • 简化代码

一元运算符

  • 依据

    • 根据所需表达式的个数
  • 概念

    • 只需要一个表达式就可以运算的运算
  • 快捷运算

    • 自增运算

      • 作用

        • 让变量的值 +1
      • 前置自增

        • ++i
        • 先自加再使用
      • 后置自增

        • i++
        • 先使用再自加
      • 注意

        • 前置自增和后置自增独立使用时二者并没有差别
        • 一般开发中我们都是独立使用
        • 后面 i++ 后置自增会使用相对较多
    • 自减运算

      • 自减与自增同理

      • 作用

        • 让变量的值-1
    • 使用场景

      • 经常用于计数来使用

比较运算符

  • 作用

    • 比较两个数据的数值或者类型是否相等
  • 使用

    • >

      • 左边是否大于右边
    • <

      • 左边是否小于右边
    • > =

      • 左边是否大于或者等于右边
    • <=

      • 左边是否小于或者等于右边
    • ==

      • 左右两边是否相等
    • ===

      • 左右两边的数值和类型是否都相等
    • !==

      • 左右两边是否不全等
  • 结果

    • boolean类型

      • true
      • false
  • 拓展

    • 比较运算符的本质

      • 字符串比较,是比较的字符对应的ASCII码

        • 从左往右依次比较
        • 如果第一位一样就比较第二位,依次类推
    • NaN不等于任何值,包括它本身

    • 尽量不要比较小数,因为小数有精度问题

      • 0.1 + 0.2 > 0.3
    • 不同类型之间比较会发生隐式转换

      • 最终把数据隐式转换为number类型在进行比较
      • 开发中推荐使用===, !==
    • = , == , ===之间的区别

      • =

        • 赋值
      • ==

        • 判断

          • 只要求值相等
      • ===

        • 全等

          • 要求值和类型都必须相等

逻辑运算符

  • 作用

    • 来解决多重条件判断
  • 使用

    • 逻辑与

      • &&
      • 并且
      • 一假全假
    • 逻辑或

      • ||
      • 或者
      • 一真则真
    • 逻辑非

      • !
      • 取反
      • 真变假,假变真(取反)
  • 短路运算符

    • 只存在于 && 和 || 中,当满足一定条件会让右边代码不执行

      • &&

        • 左边为false就短路
      • ||

        • 左边为true就短路

运算符优先级

  • 小括号>一元运算符>算式运算符>关系运算符>相等运算符>逻辑运算符>赋值运算符>逗号运算符

  • 小括号

    • ( )
  • 一元运算符

    • ++
    • --
    • !
  • 算式运算符

    • */%+-
  • 关系运算符

    • >
    • >=
    • <
    • <=
  • 相等运算符

    • ==
    • !=
    • ===
    • !==
  • 逻辑运算符

    • &&||
  • 逗号运算符

    • ,