读JavaScript权威指南(第六版)笔记(第五章)

时间:2022-08-27 08:05:11

语句

表达式在JavaScript中是短语,那么语句就是JavaScript整句或命令。用句号作结尾来分隔语句。表达式计算出一个值,但语句用来执行以使某件事发生。

5.2复合语句和空语句

复合语句:用花括号把多条语句括起来形成符合语句。

{
  x = Math.PI;
  cx = Math.cos(x);
     ...................          
}
// 第一,语句块的结尾不需要分号
//第二,语句块中的行都有缩进

空语句:包含0条语句的语句。空语句就一个分号  //  ; JavaScript解释器执行空语句时它显然不会执行任动作。

// 空语句造成的bug
if((a == 0) || (b == 0)); // 糟糕!这一行代码什么都没做。。。循环不会执行
o = null; // 这行代码总是执行

5.5for/for in

// for 循环语句只枚举对象的自身属性
// for in 循环语句除了枚举自身属性,还要枚举继承来的属性。

5.6.1标签语句

语句是可以添加标签的,标签是由语句前的标识符和冒号组成。

mainloop:while(token !=null) {
      // 忽略这里的代码。。。
      continue mainloop; // 跳转到下一次循环
      // 忽略这里的代码
}

5.6.5 throw语句 

JavaScript中,使用throw语句显示抛出一个异常(当程序产生某种异常情况或错误时产生的一个信号)。

var a;
if (a) {
       console.log(a);   
} else {
       throw new Error("a没有初始化");       
}

5.6.6try/catch/finally语句

try/catch/finally语句是JavaScript的异常处理机制。

try {
      // 通常来讲,这里的代码会从头执行到结尾而不会产生任何问题,
      // 但有时会抛出一个异常,要么是由throw语句显示抛出
       // 要不是通过调用一个方法间接抛出异常   
} catch (e) {
      // 当且仅当try语句块抛出了异常,才会执行这里的代码
      // 这里可以通过局部变量e来获取对Error对象或者抛出的其他值的引用
      // 这里的代码块可以基于某种原因处理这个异常,也可以忽略这个异常
      // 还可以通过throw语句重新抛出异常
} finally {
      // 不管try语句是否抛出了异常,这里的逻辑总是会执行,终止try语句块的方式有:
      // 1)正常终止,执行完语句块的最有一条语句
       // 2)通过break ,continue 或者return 语句终止
       // 3)抛出一个异常,异常被catch从句捕获
      // 4)抛出一个异常,异常未被捕获,继续向上传播      
}

5.7.1with语句

with (object) statement

这条语句是把object对象添加到作用域链的头部,然后执行statement,最后把作用域链恢复到原始状态。

注:建议不要使用with语句,不好优化,并且运行得更慢。

5.7.2debugger语句

debugger语句通常是什么都不做,当调试程序可用并运行的时候,JavaScript解释器将会以调试模式运行。

5.7.3“use strict” 是一条指令