1.switch语句函数
语句都很熟悉的啦,只是提一句。switch中的case语句匹配的规则其实是“===”而非简单的“==”比较,case匹配不会作任何的类型转换的。优化
2.while和do/while.net
都是循环语句,不一样的是检测表达式的位置。while是在循环的顶部,do/while是在循环体的底部检测。简单地说不管是否知足循环条件do/while都会至少执行循环体一次,而while则不是这样。debug
3.标签语句code
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语句htm
异常语句,所谓异常语句是发生异常或错误的一个标志或信号。抛出异常就是指这个情况,捕获异常实是指处理的过程。例如ip
test(-1); function test(x){ if(x < 0){ throw new Error("不能为负"); } console.log(x); } //当抛出了异常,Javascript解析器会当即中止执行,并跳转到异常处理程序,若是找不到则会被当作程序错误并输出错误报告。
5.try/catch/finally语句作用域
异常处理机制。字符串
try:定义须要处理的代码块;get
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的解析器来讲,它仅仅是一条没有反作用的语句,至关于透明的存在。
只能出如今脚本/函数体的开始;
严格模式和非严格模式↓: 严格模式和非严格模式区别