第五章 语句
- 条件语句,循环语句,跳转语句
- 表达式语句
- 复合语句
- 语句块:语句块结尾可以不加分号,语句块内的原始语句结尾必须加分号;语句块内的原始语句尽量保证缩进
- 空语句:空语句尽量添加注释,以防止意外的bug
- 声明语句:函数声明只能出现在嵌套函数的顶部
- 函数定义语句 VS 函数声明语句:使用var的话,只有变量声明提前了——变量的初始化代码仍然在原来的位置;使用函数声明语句,函数名称和函数体均提前。
- 条件语句:return和break都可以用来终止switch语句
- case是恒等(===)运算,不会做任何类型转换
- 循环语句:do循环用分号结尾,且必须以do关键字开始;while没有做要求
- for/in:如果循环体删除或者新定义一个属性,这些属性都是不能被枚举的;属性枚举的顺序是不固定(自身的,继承的,删除的etc)
- 跳转语句
- javascript中的语句可以命名或带有标签,break、continue可以标识目标循环或者其他语句标签
- break语句是跳转到循环/其他语句的结束
- continue语句是终止本次循环的执行并开始下一次循环的执行
- return语句让解释器跳出函数体的执行,并提供本次调用的返回值
- throw语句触发或者“抛出”一个异常,它是与try/catch/finally语句一同使用的,这些语句定义了处理异常的代码逻辑。这是一种复杂的跳转语句,当抛出一个异常的时候,程序会跳转到最近一个闭合异常处理程序,这个异常处理程序可以是在同一个函数中,或者在更高层的调用栈中
- 标签语句:语句是可以添加标签的,标签由语句前的标识符和冒号组成。通过给语句定义标签,就可以在程序中的任一个地方通过标签名引用这条语句
- 当break和标签一起使用时,程序将跳转到这个标签所标识的语句块的结束,或者直接终止这个闭合语句块的执行。
- break和label name之间不能换行,js解释器会自动给break加分号
- 不管break带不带标签,它的控制权都不能越过函数的边界,比如,对一条带标签的函数定义语句来说,它不能从函数内部通过这个标签跳到函数外部
- continue在while和for中的不同,在while直接跳到expression进行判断,在for则先执行increment再判断
- continue用法和break类似
- return只能在函数体内出现,且执行return语句的时候,函数终止执行
- throw语句,try/catch/finally语句
- with语句:将一个对象临时加到作用域链的顶部
- debugger语句
- use strict语句