[ js ] label的教學看不懂

看板Ajax作者 (初月)時間11年前 (2013/12/29 16:42), 編輯推噓4(4011)
留言15則, 3人參與, 最新討論串1/1
標籤敘述 標籤為敘述提供一個識別字,用於直接跳轉到該標示符號所指定的行開始 執行。但是,不像是其它的語言,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… -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.224.217.18

12/29 17:19, , 1F
你先不要看 label, 把那之前的東西給搞懂再說
12/29 17:19, 1F

12/29 17:20, , 2F
如果都懂了還是看不懂範例那就換本書吧
12/29 17:20, 2F

12/29 20:34, , 3F
var i 要宣告在迴圈內外都可以,javascript本身有提升機
12/29 20:34, 3F

12/29 20:35, , 4F
制,會自動把for statement上的變數宣告提升到scope開頭
12/29 20:35, 4F

12/29 20:37, , 5F
else內則是把i的值加上1,然後賦值給a[i]
12/29 20:37, 5F

12/29 20:38, , 6F
你明白for迴圈機制的話會明白這段迴圈會執行5次
12/29 20:38, 6F

12/29 20:38, , 7F
變數i的值會從0開始逐次增加1,0->1->2->3->4
12/29 20:38, 7F

12/29 20:41, , 8F
而label這東西如1F所言,可以不用看,這是時代遺物
12/29 20:41, 8F

12/29 20:45, , 9F
至於最後的問題,變數名稱要怎麼取隨你高興,符合規則就好
12/29 20:45, 9F

12/29 20:45, , 10F
如果給他new Array或[],這變數就是一個陣列
12/29 20:45, 10F

12/29 20:46, , 11F
你賦予字串給它,它就是存有字串的變數,這是弱形態的特性
12/29 20:46, 11F

12/29 22:07, , 12F
其實我的意思是這些都跟 label 無關而是更基本的東西
12/29 22:07, 12F

12/29 22:07, , 13F
而如果一本書跳過這些更基本的東西沒說就講 label 的話
12/29 22:07, 13F

12/29 22:08, , 14F
那這本書也就不用看了...不過確實現在也不需要去知道 label
12/29 22:08, 14F

12/29 23:43, , 15F
#1IKHBzdk (Web_Design) 這本書的奇怪問題
12/29 23:43, 15F
文章代碼(AID): #1Il-1tuD (Ajax)
文章代碼(AID): #1Il-1tuD (Ajax)