从来没有用过label,比较茫然
在哪种情况下使用label语句最好
能否给几个平时使用的情况
之前好像有在哪里看到过说不建议使用lable,是什么原因
3Q
不是表单的label,是js里的label语句
例如下面代码中的top
var itemsPassed = 0;
var i, j;
top:
for (i = 0; i < items.length; i++){
for (j = 0; j < tests.length; j++)
if (!tests[j].pass(items[i]))
continue top;
itemsPassed++;
}
怪我咯2017-04-10 14:57:49
受教,原来还有这么一种语法。MDN 上已经有你想要的答案了吧:
Avoid using labels
Labels are not very commonly used in JavaScript since they make
programs harder to read and understand. As much as possible, avoid
using labels and, depending on the cases, prefer calling functions or
throwing an error.
- label - JavaScript | MDN
PHPz2017-04-10 14:57:49
label语句可以在代码中添加标签,以便将来使用。以下是lable语句的语法:
lable:statement
下面是一个示例:
start:for(var i=0;i<count;i++){
alert(i);
}
这个例子中定义的start标签可以在将来由break或continue语句引用。加标签的语句一般都要与for语句等循环语句配合使用。
下面是一个示例:
var num=0;
outermost:
for(var i=0;i<10;i++){
for(var j=0;j<10;j++){
if(i==5&&j==5){
break outermost;
}
num++;
}
}
alert(num);//55
在这个例子中,outermost标签表示外部的for语句。如果每个循环正常循环10次,则num++语句就会正常执行100次。换句话说,如果两个循环都自然结束,num的值应该是100。但内部循环中的break语句带了一个参数:要返回的标签。添加这个标签的结果将导致break语句不仅会退出内部的for语句(即使用变量j的循环),而且也会退出外部的for语句(即使用变量i的循环)。为此,变量i和j都等于5时,num的值正好是55.
/《js高级程序设计》书中原文,纯手打,有错字算你倒霉/
天蓬老师2017-04-10 14:57:49
原来你说的是js上的label
label是给js的代码块进行命名的,比如
if(1)a:{
alert(0);
break a;
alert(1);
};
a是label的名字,当执行break a;后,就不会再执行alert(1)
再比如下面这段代码
<form name="f">
<input name="t1" /><br/>
<input name="t2" /><br/>
<input name="t3" /><br/>
<input name="t4" /><br/>
<input type="submit" />
</form>
<script>
var f=document.forms.f;
f.onsubmit=function(){
chk:{
if(f.t1.value=="")break chk;
if(f.t2.value=="")break chk;
if(f.t3.value=="")break chk;
if(f.t4.value=="")break chk;
alert("验证通过!");
return true;
};
alert("验证失败");
return false;
};
</script>
当任何一个input为空的时候,都会弹出验证失败。
你写的那段代码,top就是label名,表示后面整个for循环,continue top就是结束单次循环。
参考:神秘的大括号 JavaScript的命名代码块