(7) 流程控制

流程控制

1. 條件判斷

1. if條件語句(側(cè)重范圍判斷)

if (condition) statement1   // 只有一行代碼,省略{}

if (condition) {
    statement1
}
if (condition) 
    statement1  // 只有一行代碼,省略{}
else
    statement2  // 只有一行代碼,省略{}
    
if (condition) {
    statement1
} else {
    statement2
}

多個else if語句

if (condition1) {
    statement1
} else if (condition2) {
    statement2
} eles if (condition3) {
    statement3
} else {
    statement4
}

注意:

  1. if側(cè)重范圍比較
  2. if()或者else if()如果只有單行代碼,可以省略{},但是不推薦省略,避免歧義
  3. 上面的condition是任何值,如果放在if的()內(nèi),或者else if()內(nèi),則進行隱形轉(zhuǎn)換,遵從布爾值的轉(zhuǎn)換規(guī)則。

2. switch語句(側(cè)重值比較)

switch (expression) {
    case value1: 
        statement1
        break;
    case value2: 
        statement2
        break;
    default:
        statement3
}

注意:

  1. switch側(cè)重值比較,一般是值對比
  2. expression是===比較,非==比較
  3. break語句是可選語句,如果當(dāng)前expression === value,且break省略,則繼續(xù)向下執(zhí)行代碼,直到結(jié)束或者遇到break結(jié)束

2. 循環(huán)語句

1 for循環(huán):前測試循環(huán)語句

使用范圍:知道循環(huán)次數(shù)

for (var i = 0; i < 10; i++) {
    console.log(i);
}

// 0 1 2 3 4 5 6 7 8 9
// 上面例子等價于下面寫法
var i = 0;
for (; i < 10;) {
    console.log(i);
    i++;
}

2 while循環(huán):前測試循環(huán)語句

使用范圍:不知道循環(huán)次數(shù)

var i = 0;
while (i < 10) {
    console.log(i);
    i++;
}

// 0 1 2 3 4 5 6 7 8 9
// 此處是expression是表達式,不一定非得是i< 10類似的數(shù)字比較
while (expression) {
    statement;
}

注意:使用了while不斷循環(huán)字符串

3 do...while循環(huán):后測試循環(huán)語句

常用于循環(huán)體中的代碼至少要被執(zhí)行一次的情形。

var i = 0;
do {
    console.log(i);
    i++;
} while (i < 10);

// 0 1 2 3 4 5 6 7 8 9 10

4. for…in語句

for (var property in express) statement

var obj = { name: 'Modeest', age: 18, sex: 'boy' };
for (var property in obj) {
    console.log(property, obj[property]);
}

// name Modeest
// age 18
// sex boy

注意:

  1. 枚舉對象(包括數(shù)組)的可枚舉的屬性
  2. 枚舉的屬性順序不可預(yù)測
  3. 不可使用break,throw,continue等關(guān)鍵字終止迭代

5. for…of語句:

var arr = ['a', 'b', 'c'];
for (var val of arr) {
    console.log(val);
}

// a b c

注意:

  1. 遍歷可迭代對象定義要迭代的數(shù)據(jù)
  2. 迭代(Array,Map,Set,String,TypeArray,arguments等)
  3. 可以由break,throw,continue,return(結(jié)合函數(shù))終止

for...infor...of的區(qū)別:

Object.prototype.objCustom = function() {}; 
Array.prototype.arrCustom = function() {};

let iterable = [3, 5, 7];
iterable.foo = 'hello';

// 迭代以原始插入順序迭代對象的可枚舉屬性
for (let i in iterable) {
  console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}

for (let i in iterable) {
  if (iterable.hasOwnProperty(i)) {
    console.log(i); // logs 0, 1, 2, "foo"
  }
}

// 遍歷可迭代對象定義要迭代的數(shù)據(jù)
for (let i of iterable) {
  console.log(i); // logs 3, 5, 7
}

6. forEach語句:迭代Array

var arr = ['a', 'b', 'c'];
arr.forEach(function (val, key) {
    console.log(val, key);
})

// a 0
// b 1
// c 2

3. 其他關(guān)鍵字

1. break:立即退出循環(huán)

// break:終止循環(huán)
for (var i = 0; i < 10; i++) {
    if (i == 4) {
        break;
    }
    console.log(i);
}
// 最終的結(jié)果是:0 1 2 3

2. continue:立即退出當(dāng)前循環(huán),繼續(xù)下次循環(huán)

// 跳過當(dāng)前循環(huán)繼續(xù)執(zhí)行下一次的循環(huán)
for (var i = 0; i < 10; i++) {
    if (i == 4) {
        continue;
    }
    console.log(i);
}
// 最終的結(jié)果是:0 1 2 3 5 6 7 8 9

3. label

  1. 正常循環(huán)打印結(jié)果
for (i = 0; i < 5; i++){
  for (j = 10; j < 15; j++){
    if (j + i > 16) {
        console.log(j, i);
    }
  }
}

// 結(jié)果
// 14 3
// 13 4
// 14 4
  1. 帶標記的continue
// 一個標識符(符合標識符定義)
first:
for (i = 0; i < 5; i++){
  for (j = 10; j < 15; j++){
    if (j + i > 16) {
        console.log(j, i);
        // 返回標識符的位置
        continue first;
    }
  }
}

// 結(jié)果:
// 14 3
// 13 4
  1. 帶標記的break
// 一個標識符(符合標識符定義)
first:
for (i = 0; i < 5; i++){
  for (j = 10; j < 15; j++){
    if (j + i > 16) {
        console.log(j, i);
        // 返回標識符的位置
        break first;
    }
  }
}

// 結(jié)果:14 3
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、定義和分類 1、定義 某些代碼會被重復(fù)執(zhí)行 2、分類 for語句,while語句,do...while語句,b...
    凱哥Java閱讀 549評論 0 0
  • 所有控制流程語句都具有相同的基本特征:根據(jù)一組條件選擇要執(zhí)行的語句。這些語句分三大類,并通過其主要行為進行描述。選...
    CarlDonitz閱讀 440評論 0 0
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 4,088評論 0 2
  • Swift 提供了類似 C 語言的流程控制結(jié)構(gòu),包括可以多次執(zhí)行任務(wù)的for和while循環(huán),基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 784評論 1 1
  • 1.與朱雨老師交接晨會內(nèi)容。 2.轉(zhuǎn)班并記錄亮點與問題。 3.查看各班家園聯(lián)系冊,綠寶石家長回復(fù)率較高,其他班回復(fù)...
    王子媽咪_fc76閱讀 486評論 0 0

友情鏈接更多精彩內(nèi)容