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的解析器来说,它仅仅是一条没有副作用的语句,相当于透明的存在。
只能出现在脚本/函数体的开始;
严格模式和非严格模式↓: 严格模式和非严格模式区别
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。