1.标签
function bar(){...}{foo:bar()}
上述的代码没有任何问题,foo就是bar()的标签(可以理解为名字,标识等)
- 可以通过标签实现类似goto的功能(javascript不支持goto语句)
//标签为foo的循环foo:for(var i=0;i<4;i++){for(var j=0;j<4;j++){//如果i和j相等,继续外层循环if(j===i){//跳转到foo的下一个循环continue foo;}//跳过奇数结果if((j*i)%2===1){//继续内层循环(没有标签的)continue;}}console.log('i',i,'j',j);}
- continue foo并不是跳转到foo所在的标签处继续执行,而是执行foo循环的下一轮循环
- 带标签的循环的更大的一个好处在于,和break,一起使用可以实现从内层的循环跳转到外层的循环
//标签为foo的循环foo:for(var i=0;i<4;i++){for(var j=0;j<4;j++){//跳过奇数结果if((j*i)>=3){console.log('stopping',i,j);break foo;}}console.log('i',i,'j',j);}
- break foo并不是跳转到foo所在的标签处继续执行,而是跳出标签foo所在的循环/代码块,继续执行后面的代码
- 标签也可用于非循环代码块,但是只有break才可以.我们可以对带标签的代码块使用break,但是不能对非循环的代码块使用continue,也不能对不带标签的代码块使用break;
