标签语句
标签由语句前面的标识符与冒号组成:
identifier: statement
可以形象的理解为标签名就是语句块的一个外号,比如我们一说卷福,就知道是这个家伙
要注意的是,标识符一定要合法,不能是保留字
说了这些注意事项,那么,标签能干些什么呢?事实证明,当给语句块定义标签的时候,它才会更有用。一般情况下,我们会将标签与break(跳出循环)和continue(跳过本次循环)相结合,从而达到好的效果。我们来看这个例子:
var i = 10;
loopFirst: while(i){
i--;
loopSec: for(var j = 0; j < 3; j++){
console.log('j=' + j);
if(i==7 && j == 2){
console.log('j=' + j + ' i=' + i);
break loopFirst;
}
}
if(i == 8) {
continue loopFirst;
}
console.log('j=' + j + ' i=' + i);
}
控制台输出:
可以看到,当i=8时,continue loopFirst跳过了内层循环,没有输出i=8;当i==7 && j == 2时,break loopFirst跳过了外层循环,程序戛然而止。
1.这里的break与标签之间不能换行,否则就会被浏览器解析为单个的break,也就是说浏览器会自作多情的在break后面添加一个分号,
2.continue只会跳过当前这一次循环进入下一次循环
throw语句
语法如下
throw expression;
举例判断正整数
function positiveInt(value){
if(value<0) throw new Error('positiveInt: value must >= 0');
if(value-Math.floor(value)) throw new Error('positiveInt: valur must be integer');
}
positiveInt(90.3);
控制台输出:
延伸Error
构造函数:new Error(); or new Error(massage);
参数massage表示一条提供异常的细节的错误信息。
name:一个指定该异常的类型的字符串,就相当于是异常错误的名字。
try/catch/finally语句
- try/catch/finally语句是JavaScript的异常处理机制,其中try定义了需要处理的异常所在的代码块,catch语句跟随在try语句后面,当try语句内某处发生异常的时候,调用catch内部的代码逻辑,catch后面紧跟finally块,finally块中放置清理代码,不管try中是否发生异常,finally总会运行。
- finally与catch是可选的,但是try至少需要二者之一才能组成完整的语句。
- 三者都必须使用花括号将其内容语句包裹起来,即使只有一条也不可以省略。
- try的代码块有可能抛出异常,当抛出异常的时候catch捕获异常,这时才会执行catch的代码。无论try是否抛出异常,finally执行
- catch具有内部作用域,也就是说内部定义的变量只在catch中才有定义
他们三个的关系就像一家三口,小孩子try有时会犯错,这个时候严父catch发现了,说不对,你发错了!然后把try打一顿,慈母finally不会管try是否犯错了,她永远都是try的坚实后盾,为try处理事后。
好啦,现在举个栗子:
//这里我们使用上面的函数
function positiveInt(value){
if(value<0) throw new Error('positiveInt: value must >= 0');
if(value-Math.floor(value)) throw new Error('positiveInt: valur must be integer');
}
try{
positiveInt(90.3);
}
catch(e){
alert(e);
}
finally{
console.log('game over');
}
浏览器弹出:
最后finally执行输出:
当然,如果在这里传入一个正整数,finally还是会输出。
with语句
with(object)
statement
这条语句的作用就是将Object添加到作用域链的头部,然后在执行statement之后将作用域链恢复。
首先,我们需要知道with的作用是什么?with方法减少了大量的输入,这样做可以使代码简洁,with就相当于代替了Object,在statement中,我们可以直接使用属性名。
当然,这也是它的缺点,在大量代码的情况下容易造成语义不明,代码的可读性就比较差了。在严格模式下,是禁止使用with的,在非严格模式下也是不建议使用的,with语句难于优化,并且运行相较会慢。
var obj = {
value:12,
first:'a',
sec:'b'
}
with(obj){
console.log(value , first , sec); //12 "a" "b"
}
debugger语句
debugger语句就是来产生一个断点的。当JavaScript执行过程中遇到了debugger语句的时候,就会停止在断电的位置,这是可以使用调试器进行调试。当然,这就比较麻烦啦~浏览器可以很好的打断点啊
F12 -> source -> 点击你需要处理的文件,然后在要打短点的行标处点击一下,断点打上。
(我在第十行打了一个断点,之后你就可以在console界面上进行一系列的操作啦)