解析JavaScript中的標籤語句

來源:互聯網
上載者:User

Javascript中標籤(label)是一個標識符。標籤可以與變數重名,它是一個獨立的文法元素(既不是變數,也不是類型),其作用是標識”標籤化語句(labeled statement)”

標籤聲明
標籤(label)可以聲明在任何一個語句前面,或者語句塊前,以使得語句或語句塊被“標籤化(labeled)”。
label1:
複製代碼 代碼如下:
    myFun1();
label2:{
   var i = 1, j = 2;
   var k = i + j;
}

注意:當標籤(label)後面連續多條語句時,只有第一條語句被標籤化
雖然GOTO是Javascript的保留關鍵字,但是裡沒有GOTO語句。除了GOTO外,Javascript裡有另外三個關鍵字可以改變程式的流程:break,continue和return。其中break和continue可以和標籤(label)一起使用。

break與標籤
break通常用於跳出for、while迴圈和跳出switch語句。預設情況下,break子句作用於迴圈語句的最內層,或者整個switch語句,因此它不必特別地指定中斷語句的範圍。但break子句具有一種擴充文法,以指示其作用範圍。

break my_label;
除了可以跳出迴圈和switch分支,還可以跳出標籤化語句(labeled statement)的內部
複製代碼 代碼如下:
var str = prompt('please input a string','1234567890');

my_label: {
    if (str && str.length < 10) {
        break my_label:
    }
    str = str.substr(str.length-10);
}

alert(str);

continue與標籤
continue僅對迴圈語句有意義,因此它只能作用於for、for…in、while和do…while這些語句的內部。預設情況下,它表明停止當前迴圈並跳轉到下一次迴圈迭代開始處運行。

continue後面也可以帶一個標籤(label),這時表明從迴圈體內部中止,並繼續到標籤(label)指示處開始執行,並且這個標籤指示的語句必須是包含此continue的迴圈語句。
例如:
loop:
複製代碼 代碼如下:
  for (var j = 0; j < 5; j++)
  {
     if (j == 2) continue loop;
     document.write("loop: " + j +);
  }

上面例子continue + label體現不出label的特殊作用,其實完全可以把label去掉,效果相同。下面再看一個例子
複製代碼 代碼如下:
document.write("Entering the loop!<br /> ");
outerloop:   // This is the label name
for (var i = 0; i < 3; i++)
{
   document.write("Outerloop: " + i + "<br />");
   for (var j = 0; j < 5; j++)
   {
      if (j == 3){
         continue outerloop;
      }
      document.write("Innerloop: " + j + "<br />");
   }
}
document.write("Exiting the loop!<br /> ");

使用continue label直接跳到外層迴圈才是其意義所在。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.