5.1 表达式语句
5.2 复合语句与语句
JavaScript可以用花括号将多条语句联合在一起,形成一个复合语句。
es5没有块级作用域,这就意味着在语句块里声明的变量并不是块所私有的。
es6出现了块级作用域,使用let可以为单个语句块定义私有变量。
5.3 声明语句
5.3.1 var
5.3.2 function
5.4 条件语句
- if / else
- switch
5.5 循环语句
5.5.1 while
5.5.2 do/while
5.5.3 for
5.5.4 for/in
5.6 跳转
5.6.1 标签语句
JavaScript的语句是可以加标签的,标签由语句前的标识符和冒号组成:
identifier: statement
标签只能被continue与break使用
5.6.2 break语句
当需要跳出非就近的循环体或switch语句时:
break labelname;
但对于一条带标签的函数定义语句来说,不能从函数内部通过这个标签来跳转到函数外部。
5.6.3 continue语句
5.6.4 return语句
5.6.5 throw语句
5.6.6 try/catch/finally语句
try {
//有可能抛出异常的代码块
} catch (e) {
//catch语句中规定了指定异常的处理方式,在一个try/catch/finally语句块中可以有多个
} finally {
//不管try语句块是否抛出异常,这里的逻辑总会被执行
}
5.7 其他语句类型
5.7.1 with语句
用于临时扩展作用域链,但不推荐使用。
with(document.forms[0]) {
name.value = ""; //相当于document.forms[0].name.value,下同
address.value = "";
email.value = "";
}
优点: 简化输入
缺点: 代码难以优化,运行效率低
5.7.2 debugger语句
在调试模式下产生一个断点。
“use strict”
非语句
是es5引入的一条接近语句的指令,与普通语句的区别如下:
1)不包含任何语言的关键字
2)只能出现在脚本代码或函数体的最开始
严格模式相较非严格模式的限制
1)禁用with语句
2)所有变量都要先声明,否则会抛出一个引用异常错误
3)把调用函数里的this值从全局对象改为undefined
4)delete 非法标识符将报语法错误,delete不可配置的属性将报类型错误,而非只是返回false
5)在对象直接量中定义多个同名属性会报语法错误