前言:什麼?JavaScript還有label語句?這不是HTML中的标簽嗎?下面進行簡單的介紹
首先先來複習一下for循環中的break和continue
continue是退出變量為j的循環一次(也就是退出目前循環一次),然後繼續執行
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
var num = ;
for(var i=; i<; i++) {
for(var j=; j<; j++){
if(i== && j == ){
continue;
}
num++;
}
}
alert(num);//這裡是24
</script>
</body>
</html>
break是退出變量為j的循環,不再繼續執行(退出整個循環),然後執行外部的變量為i的循環。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
var num = ;
for(var i=; i<; i++) {
for(var j=; j<; j++){
if(i== && j == ){
break;
}
num++;
}
}
alert(num);//這裡是24
</script>
</body>
</html>
最後就是我們今天的主角,label語句,先來看一段代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
var num = ;
outermost:
for(var i=; i<; i++) {
for(var j=; j<; j++){
if(i== && j == ){
continue outermost;
}
console.log(i+"---"+j);
num++;
}
}
alert(num);//這裡也是23
</script>
</body>
</html>
這裡的outermost是我們的label語句,這裡的outermost我們可以自己定義,從代碼我們可以知道這裡的continue不再是直接跳出目前循環,而是直接跳轉到outermost哪裡,從哪裡開始執行,是以對于最後結果也就很正常了。另外對于這裡的label語句後的(:)是一定不能少的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
var num = ;
outermost:
for(var i=; i<; i++) {
for(var j=; j<; j++){
if(i== && j == ){
break outermost;
}
console.log(i+"---"+j);
num++;
}
}
alert(num);//這裡是18。break會退出變量為i的循環,也會退出變量為j的循環
</script>
</body>
</html>
最後我們還可以寫在for循環中間
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
var num = ;
for(var i=; i<; i++) {
for(var j=; j<; j++){
outermost:
if(i== && j == ){
break outermost;
}
console.log(i+"---"+j);
num++;
}
}
alert(num);//這裡是25
</script>
</body>
</html>