1

1.switch语句

  • 语句都很熟悉的啦,只是提一句。switch中的case语句匹配的规则实际上是“===”而非简单的“==”比较,case匹配不会做任何的类型转换的。

2.while和do/while

  • 都是循环语句,不同的是检测表达式的位置。while是在循环的顶部,do/while是在循环体的底部检测。简单地说无论是否满足循环条件do/while都会至少执行循环体一次,而while则不是这样。

3.标签语句

tag:if(matrix){
    for(var i = 0 ; i < matrix.lenght ; i++){
        var row = matrix[x];
        if(!row){
            break tag;
        }
    }
    //位置a
}
//位置b
//如果仅仅是break他会跳出到位置a,而上例中则跳转到了位置b。

4.throw语句

  • 异常语句,所谓异常语句是发生异常或错误的一个标志或信号。抛出异常就是指这个状况,捕获异常实是指处理的过程。例如

test(-1);
function test(x){
    if(x < 0){
        throw new Error("不能为负");
    }
    console.log(x);
}
//当抛出了异常,Javascript解析器会立即停止执行,并跳转到异常处理程序,如果找不到则会被当做程序错误并输出错误报告。

5.try/catch/finally语句

  • 异常处理机制。

  • try:定义需要处理的代码块;

  • catch:在try之后用来在出现异常时进行处理;

  • finally:无论怎样都执行的语句,一般用于清理工作。

  • 不过好像coding的时候好像很少用到,那我们什么时候才会用?研究了一下:其实是为了程序“体面的退出”。

//例如:
try{
    window.a.b;
}catch(e){
    alert(e);
    alert("continue");
}
//如果用if粗糙地判断你需要先判断window.a是否合法在判断window.b否则直接判断就有可能出现问题。
//但是用try/catch就可以“体面”的返回报错,并使程序继续运行。

6.with语句

  • *严格模式中禁止使用with语句。非严格模式也不推荐使用,因为使用with的代码难于优化切效率比较低。

//with使用:
with(objecy){
    //body
}
//with可以暂时的将object推送到作用域链的顶端, 在body之后在恢复作用域链。
//比如:
with(obj) x=1;
//其实就是把obj推向了作用域链的顶端并使obj.x = 1;
//其实效果和在全局定义obj并obj.x = 1的效果是一样的;
//并且如果obj没有x属性的话,上例相当于x = 1;

7.debugger语句

  • 暂停程序执行,类似设置断点功能。

8.严格模式(use strict)

  • 它是ECMAScript5引入的指令(而非语句);

  • 仅仅是一个字符串直接量表达式,对于没实现ES5的解析器来说,它仅仅是一条没有副作用的语句,相当于透明的存在。

  • 只能出现在脚本/函数体的开始;


nelson2016
127 声望8 粉丝

小的是一枚web前端开发攻城狮,但正在不断努力称为一名Full Stack。