選擇結構與循環結構是編程中處理邏輯的核心結構,JavaScript中支持if-else和switch-case選擇結構,支持for,for-in,do-while,while循環結構。而且能夠使用break與continue語句進行循環的跳出,簡單的條件選擇if語句示例以下:javascript
//if條件語句 if (true) { console.log("條件語句"); }; if (false) { } else { console.log("if-else語句"); }; var a = 10; if (a < 10) { console.log("a<10"); } else if (a == 10) { console.log("a=10"); } else { console.log("a>10"); };
switch-case選擇結構用於多分支條件的選擇,示例以下:前端
//選擇語句 var b = "hi"; switch (b) { case "hello": { console.log("Hello world"); } break; case "hi": { console.log("Hi world"); } break; default: { console.log("都沒匹配上"); } }
須要注意,每一個case結構後面原則上都須要使用break進行中斷匹配,若是不添加此break,則匹配到一個case語句後switch結構並不會結束,會繼續嘗試匹配後面的case條件。java
for循環結構用於處理大量重複的邏輯,示例以下:c++
for (var i = 0; i < 10; i++) { console.log("循環" + i); } for (var i = 0; i < 10; i++) { console.log("循環" + i); if (i == 2) { //使用break能夠提早中斷循環 break; }; }
JavaScript還有一種更高效的循環模式,for-in結構,這種結構專門用來遍歷對象,其能夠將對象的屬性遍歷出來,示例以下:編程
var obj1 = { name: "jaki", age: 25 }; var obj2 = [1, 2, 3, 4, 5, 6, 7, 8]; for (var x in obj1) { //跳過本次循環 並非跳出循環 if (x == "name") continue; console.log(x + ":" + obj1[x]); } for (var x in obj2) { console.log(x + ":" + obj2[x]); }
須要注意,對於數組,其遍歷出來的是數組的下標,並非其中的值,這和C/OC,Swift等語言有所差別,也證實了數組在JavaScript中其實就是一種特殊的對象。數組
while循環和do-while循環的差別在於whlie結構是先進行循環條件的判斷,再進入循環體,而do-while結構則是先進入循環體,在進行循環條件的判斷,示例以下:學習
var c = 1; while (c < 10) { console.log(c); c++; } do { console.log(c); c--; } while (c > 1);
前面提到過break和continue語句,break語句用於中斷switch-case匹配或者跳出最近的循環,跳出循環的意思是指執行到break後,不管後面循環次數還有多少次,直接跳出,執行循環結構以後的代碼。continue語句的做用則是跳出最近的本次循環,接着進行循環條件的判斷,若是知足會繼續進行循環,而且若是有多層循環嵌套,break和continue也能夠經過label標籤指定具體跳出那層循環,示例以下:spa
LAB: for (var i = 0; i < 5; i++) { for (var j = 0; j < 5; j++) { if (j == 2) { break LAB }; console.log(i + '==' + j); }; };
上面的代碼,若是不使用LAB標籤,則外層循環不會被中斷。code
前端學習新人,有志同道合的朋友,歡迎交流與指導,QQ羣:541458536對象