[ js ] label的教學看不懂

作者: livetune (初月)   2013-12-29 16:42:29
標籤敘述
標籤為敘述提供一個識別字,用於直接跳轉到該標示符號所指定的行開始
執行。但是,不像是其它的語言,JavaScript沒有像goto這樣的跳躍敘述
。這個標籤敘述僅能由break和continue敘述使用,用來指示break和continue
到哪個敘述,語法如下:
label:
statement
參數label 用於為後面的敘述定義一個唯一的識別字,它可以是任何的符合
JavaScript變數定義規則的識別字。
參數statement是與label相關聯的一個或多個敘述,也可以是複合敘述。
例如下面的程式碼,定義了一個名為Inner的標籤,continue敘述使用一個
標籤敘述來創建一個陣列,在該陣列中,每行的第三列包含一個未定義的值。
var a = new Array();
Inner:
for( var i= 0; i < 5 ; i ++){
if( i == 2) {
//如果i等於2就跳到 Inner繼續執行,這樣第三行就沒有賦值
continue Inner;
} else {
a[i] = i + 1;
}
var s = "";
//搜尋陣列元素
for ( var j = 0; j <5; j ++ ) {
s += a[j] + "<br>";
}
document.write(s);
這毀會傳回如圖5-8所示的結果(第三個元素沒有值):
1
2
undefined
4
5
_______擷自張亞飛《JavaScript & jQuery 全能權威指南》
這個範例我有看沒有懂耶@@;
不懂的地方有點多..例如,為什麼它在宣告變數的時候,是直接在
for迴圈的括號裡面宣告,不是在外面?之後的程式碼則是在外面宣
告 var s = "";
它的 else { a[i] = i + 1 }這邊我也看不太懂
是表示如果 i 不是小於 5 的話會把它加1嗎? 
這邊else這樣寫的用意我也不太懂@@
新手上路,還請大家不吝指點迷津一下..感激~感激 ~~ <(__ __)>
想請問之後的程式碼也是用同一個陣列嗎?變數a…
作者: LPH66 (-6.2598534e+18f)   0000-00-00 00:00:00
你先不要看 label, 把那之前的東西給搞懂再說如果都懂了還是看不懂範例那就換本書吧
作者: s540421 (虫它虫它)   0000-00-00 00:00:00
var i 要宣告在迴圈內外都可以,javascript本身有提升機制,會自動把for statement上的變數宣告提升到scope開頭else內則是把i的值加上1,然後賦值給a[i]你明白for迴圈機制的話會明白這段迴圈會執行5次變數i的值會從0開始逐次增加1,0->1->2->3->4而label這東西如1F所言,可以不用看,這是時代遺物至於最後的問題,變數名稱要怎麼取隨你高興,符合規則就好如果給他new Array或[],這變數就是一個陣列你賦予字串給它,它就是存有字串的變數,這是弱形態的特性
作者: LPH66 (-6.2598534e+18f)   0000-00-00 00:00:00
其實我的意思是這些都跟 label 無關而是更基本的東西而如果一本書跳過這些更基本的東西沒說就講 label 的話那這本書也就不用看了...不過確實現在也不需要去知道 label
作者: shyangs (厚呦)   0000-00-00 00:00:00
#1IKHBzdk (Web_Design) 這本書的奇怪問題

Links booklink

Contact Us: admin [ a t ] ucptt.com