#第5章 语句
- <a href="#no1">5.1 表达式语句</a>
- <a href="#no2">5.2 复合语句和空语句</a>
- <a href="#no3">5.3 声明语句</a>
- <a href="#no4">5.4 条件语句</a>
- <a href="#no5">5.5 循环</a>
- <a href="#no6">5.6 跳转</a>
- <a href="#no7">5.7 其他语句类型</a>
- <a href="#no8">5.8 JavaScript语句小结</a>
###**表达式在JS中是短语,那么语句就是JS整句或命令。**
- 条件语句:JS解释器可以根据一个表达式的值来判断是执行还是跳过这些语句,如`if`语句和`switch`语句。
- 循环语句:可以重复执行语句,如`while`和`for`语句。
- 跳转语句:可以让解释器跳转至程序的其他部门继续执行,如`break`、`return`和`throw`语句。
##<a name="no1">5.1 表达式语句</a>
> 具有副作用的表达式是JS中最简单的语句。
##<a name="no2">5.2 复合语句和空语句</a>
> 可以用逗号运算符将几个表达式连接在一起,形成一个表达式,同样,JS中还可以将多条语句联合在一起,形成一条复合语句。只需要用花括号将多条语句括起来即可。
1. 语句结尾不需要分号。块中的原始语句必须以分号结束,但语句块不需要。
2. 语句块中的行都有缩进,这不是必须的,但是能提高代码可读性。
> 空语句:允许包含0条语句的语句。
如下所示:
;
##<a name="no3">5.3 声明语句</a>
> `var`和`function`都是声明语句,它们声明或定义变量或函数。
###5.3.1 var
> `var`语句用来声明一个或多个变量。语法如下:
var name_1 [ = value_1][,...,name_n [ = value_n]]
**var 声明的变量是无法通过 delete 删除的。**
> 如果`var`语句中的变量没有指定初始化表达式,那么这个变量的值初始为`undefined`。
###5.3.2 function
> 关键字`function`用来定义函数。语法如下:
function funcname([arg1[, arg2 [..., argn]]]){
statements
}
**尽管函数声明语句和函数定义表达式包含相同的函数名,但二者仍然不同。两种方式都创建了新的函数对象,但函数声明语句中的函数名是一个变量名,变量指向函数对象。使用`var`的话,只有变量声明提前了——变量的初始化代码仍然在原来的位置。然而使用函数声明语句的话,函数名称和函数体均提前。**
##<a name="no4">5.4 条件语句</a>
> 条件语句是通过判断指定表达式的值来决定执行还是跳过某些语句。
###5.4.1 if
if(expression)
statement
###5.4.2 else if
if(n == 1){
//执行代码1
}else if(n == 2){
//执行代码2
}else{
//之前的条件都为false,则执行这里的代码块
}
###5.4.3 switch
switch(n){
case 1:
// 执行代码块1
break;
case 2:
// 执行代码块2
break;
case 3:
// 执行代码块3
break;
default:
// 执行代码块4
break;
}
##<a name="no5">5.5 循环</a>
###5.5.1 while
while(expression){
statement
}
###5.5.2 do/while
do
statement
while(expression)
###5.5.3 for
for(initialize; test; increment)
statement
###5.5.4 for/in
for(variable in object)
statement
##<a name="no6">5.6 跳转</a>
> 跳转语句可以使JS执行从一个位置跳转到另一个位置。
###5.6.1 标签语句
> 语句是可以添加标签的,标签是由语句前的标识符和冒号组成:
identifier: statement
###5.6.2 break语句
> 单独使用`break`语句的作用是立即退出最内层的循环或`switch`语句。
break;
###5.6.3 continue语句
> `continue`语句和`break`语句非常类似,但它不是退出循环,而是转而执行下一次循环。
continue;
###5.6.4 rerturn语句
> 函数中的`return`语句即是指定函数调用后的返回值。
return expression;
**return语句只能在函数体内出现,否则就会报语法错误。**
###5.6.5 throw语句
throw expression;
###5.6.6 try/catch/finally语句
> `try/catch/finally`语句语句是JS的异常处理机制。其中`try`从句定义了需要处理的异常所在代码。`catch`从句跟随在`try`从句之后,当`try`块内某处发生了异常时,调用`catch`内的代码逻辑。`catch`从句后跟随`finally`块,后者中放置清理代码,不管`try`块中是否产生异常,`finally`块内的逻辑总是会执行。
try{
//通常来讲,这里的代码会从头执行到尾而不会产生任何问题。
//但有时会抛出一个异常,要么是由throw语句直接抛出异常,
//要么就是通过调用一个方法间接抛出异常
}
catch(e){
//当且仅当try语句块抛出了异常,才会执行这里的代码
//这里可以通过局部变量e来获得对Error对象或者抛出的其他值的引用
//这里的代码块可以基于某种原因处理这个异常,也可以忽略这个异常
//还可以通过throw语句重新抛出异常
}
finally{
//不管try语句块是否抛出了异常,这里的逻辑总是会执行,终止try语句块的方式有:
// 1、正常终止,执行完语句块的最后一条语句
// 2、通过break、continue或return语句终止
// 3、抛出一个异常,异常被catch从句捕获
// 4、抛出一个异常,异常未被捕获,继续向上传播
}
##<a name="no7">5.7 其他语句类型</a>
###5.7.1 with语句
> `with`语句用于临时扩展作用域链。语法如下:
with(object)
statement //这条语句将object添加到作用域链的的头部,然后执行statement,最后把作用域链恢复到初始状态。
###5.7.2 debugger语句
> `debugger`语句用来产生一个断点。
###5.7.3 “use strict”
> 使用`use strict`指令的目的是说明(脚本或函数中)后续的代码将会解析为严格代码。
##<a name="no8">5.8 JavaScript语句小结</a>
> 略 **P116-117列出了每种语句的语法和用途**