读JavaScript权威指南(第六版)笔记(第五章)
语句
表达式在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” 是一条指令