写在前面:

  • JavaScrip语句以分号结束
  • 表达式计算出一个值,语句执行以“使某件事发生”
  • “使某件事发生”的一个办法是使用有副作用的表达式,如赋值和函数调用等(可作为单独的语句,称为“表达式语句”(expression statement))
  • JavaScript程序是一系列语句的集合,默认按照顺序依次执行,通过改变这种默认的执行顺序也可达到“使某件事发生”的效果
    • 条件(conditional)语句
      • if语句
      • switch语句
    • 循环(loop)语句
      • while语句
      • for语句
    • 跳转(jump)语句
      • break
      • throw
      • return

 

  1. 表达式语句
    • 赋值、递增、递减、delete
    • 函数调用
  2. 复合语句和空语句
    • 复合语句(compound statement)
      • 用花括号把多条语句括起来形成一条复合语句
      • 语句块
        • 结尾不需要分号
        • 整齐的缩进可让代码可读性更强
        • 在语句块中声明的变量不是语句块私有的
    • 空语句(empty statement)
      • 包含0条语句
      • 如有特殊目的需要使用空语句,最好在代码中添加注释
  3. 声明语句
    • 作用:定义标识符(变量名和函数名)并给其赋值
    • var
      • 用于声明一个或多个变量
      • 使用其声明的变量不可用delete删除
      • 在赋初值前变量的值是undefined
      • 可用作for循环、for...in循环的一部分
      • 多次声明同一变量是无所谓的
    • function
      • 用于声明函数,其语法格式:
        1 function funcname([arg1[,arg2[...,argn]]]){
        2   statement  
        3 }

         

      • 花括号是必须的
      • 函数声明嵌套在其他函数中时,只能出现在所嵌套函数的顶部,不可出现在如if语句、while语句中
      • 函数声明与函数定义
        1 function f(...) {...}            //函数声明
        2 var f = function(...){...}            //函数定义表达式

         

        • 两种方式都创建了新的函数对象,但函数声明中函数名是一个变量名,指向函数对象
        • 函数定义中的函数出现“提前”的现象(类似变量的声明提前
      • 变量声明与函数声明
        • 变量声明提前时,变量的初始化代码仍然在原来的位置
        • 函数声明提前时,函数名称和函数体均提前,这意味着可以在声明一个函数之前调用它
      • 和var语句一样,函数声明语句创建的变量也是无法删除的,这些变量不是只读的,变量值可以重写
  4. 条件语句
    • if语句(略)
    • if ... else 语句(略)
    • if ... else if ... else语句(略)
    • switch语句
       1 switch(expression){
       2   case 1:
       3                ...
       4   break;
       5   case 2:
       6                ...
       7   break;
       8   
       9     ...
      10 
      11   default:
      12                ...
      13   break;                            
      14 }

       

      • 表达式和case匹配时,是按照”===“进行比较的,并不会做任何类型转换
      • 在函数中使用switch使用时,break可用return代替
      • default可以放在switch语句内的任何地方
      • case后跟随的最常见的是数字和字符串直接量,ES标准允许case后跟随任意的表达式
      • 并不是所有的case都能匹配到,应当避免使用有副作用的case表达式,如函数调用表达式和赋值表达式
    •   
  5. 循环
    • while
      1 while(expression){
      2   ...  
      3 }
      • 死循环:while(true){   ...  }
    • do...while
      1 do{
      2   ...  
      3 }while(expression);
    • for
       1 for(initialize;test;increment){
       2          ......  
       3 }
       4 
       5 /*与之等价的while循环*/
       6 initialize;
       7 while(test){
       8     ......
       9     increment;
      10 }
      11 
      12 //注意:在使用continue语句时,while循环和for循环并不等价
      • initialize、test、increment中的任何一个都可省略,但两个分号必须写
      • 死循环:for(;;){    ...    }
    • for ... in
      1 for(variable in object){
      2        ......  
      3 }
      • JavaScript解释器先计算object表达式,如果为null或者undefined,跳过循环执行后面的代码;如果为一个原始值,会将这个原始值转换为与之对应的包装对象
      • for...in 循环只遍历“可枚举的”(enumerable)属性
      • 属性枚举的顺序
        • 通常按照定义的先后顺序
        • 下列情况中取决于具体的实现:
          • 对象继承了可枚举属性
          • 对象具有整数数组索引的属性
          • 使用delete删除了对象已有的属性
          • 使用Object.defineProperty()或者类似的方法改变了对象的属性
  6. 跳转
    • 标签语句
      • 作为标签的标识符必须是一个JavaScript合法的标识符,不能是保留字
      • 形式为:“标签名:”
      • 标签的命名空间和变量或函数的命名标签是不一样的,可以使用同一个标识符作为语句标签和作为变量名或函数名
      • 标签语句只在它所起作用的语句内是有定义的
      • 任何语句可以有多个标签
      • 一个语句标签不能和它内部的语句标签重名,但在两个代码段不相互嵌套的情况下可以出现同名的语句标签
    • break
      • 用于退出循环和switch语句
      • 可搭配标签使用
    • continue
      • 转而执行下一次循环
      • 可搭配标签使用
    • return
      • 函数调用后的返回值
      • 只能在函数中使用
    • throw
      • 异常(exception):发生某种情况或错误时产生的一个信号
      • 抛出异常:用信号通知发生了错误或异常情况
        • throw语句用于显示地抛出异常,通常采用Error类型和其子类型
        • Error类型
          • name属性:表示错误类型
          • message属性:用于存放传递给构造函数的字符串
      • 抛出异常时,JavaScript解释器会立即停止当前正在执行的逻辑,跳转至就近的异常处理程序(try/catch/finally语句),如果没有找到异常处理程序,异常将被当成程序错误来处理,并报告给用户
    • try/catch/finally
      • 捕获异常:处理这个(错误或异常情况)信号,采取手段从错误中恢复
  7. 其他语句
    • with
      • 用于临时扩展作用域链
    • debugger
      • 用来产生一个断点
    • use strict
      • 对脚本和函数应用严格模式
  8. 小结(略)
posted on 2021-07-31 16:02  KK的备忘录  阅读(80)  评论(0编辑  收藏  举报