【读书笔记】细读《JavaScript权威指南》(第五章: 语句)

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)在对象直接量中定义多个同名属性会报语法错误

猜你喜欢

转载自blog.csdn.net/qq_29977681/article/details/80878383