日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

流程控制介绍,顺序结构、分支结构、循环结构、Promise对象、throw语句、break和continue关键字

發(fā)布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 流程控制介绍,顺序结构、分支结构、循环结构、Promise对象、throw语句、break和continue关键字 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

流程控制

流程控制:指代碼的執(zhí)行順序,有三種方式:順序結構、分支結構、循環(huán)結構

順序結構:

代碼從上到下,從左到右的執(zhí)行順序。

分支語句:

if語句、if-else語句、if-else if-else···語句、switch-case語句、三元表達式:

<script>// if-else語句:// if (條件) {// 要執(zhí)行的代碼1// } else {// 要執(zhí)行的代碼2// };var age = 19;if (age == 19) {console.log('等于19');};var num = prompt('請輸入數(shù)字');if (num % 2 == 0) {console.log('該數(shù)字是偶數(shù)');} else {console.log('該數(shù)字是奇數(shù)');};var result = prompt('請輸入B');if (result == 'B') {var result2 = prompt('請輸入Y');if (result2 == 'Y') {console.log('您輸入的的有效字母是:Y');} else {console.log('您輸入的無效字符是:' + result2);};} else {var result3 = prompt('請輸入T');if (result3 == 'T') {console.log('您輸入的是有效字母:T');} else {console.log('您輸入的無效字符是:' + result3);};};var num1 = 40;var num2 = 30;if (num1 > num2) {console.log(num1);} else {console.log(num2);};// 三元表達式: 條件? 表達式1: 表達式2;var age = 18;var result = age >= 18 ? '成年' : '未成年';console.log(result);var result = 5 > 3 ? '對' : '錯';console.log(result); //對var num = 2 - 1 > 5 - 6 ? 2 - 1 : 5 - 6;console.log(num); //1var str = 10 - 5 < 0 ? 5 - 5 > 0 ? 'Y' : 'N' : 5 - 5 == 0 ? 'y' : 'n';console.log(str); //y//if-else if-else語句:var score = prompt('請輸入分數(shù)');if (isNaN(score)) {console.log('輸入有誤');} else if (score > 90 && score <= 100) {console.log('A級');} else if (score > 80 && score <= 90) {console.log('B級');} else if (score > 70 && score <= 80) {console.log('C級');} else if (score > 0 && score <= 70) {console.log('成績不合格');} else if (score > 100 || score < 0) {console.log('輸入有效成績');};// switch-case:多分支語句;// 語法:switch(表達式){// case 值1 :代碼1;break;// case 值2 :代碼2;break;// case 值3 :代碼3;break;// ···// default:代碼4;break;(這里break和default可省略)// } var score = prompt('請輸入ABC等級別');switch (score) {case 'A':console.log('分數(shù)在100-90之間');break;case 'B':console.log('分數(shù)在80-70之間');break;default:console.log('分數(shù)在0-60之間');};//當好幾個case有相同的結果時,可以省略重復的代碼塊,只需要在最后一個case后面跟代碼塊:var sease = prompt('請輸入月份');switch (sease) {case '1':case '2':case '3':console.log('春季');break;case '4':case '5':case '6':console.log('夏季');break;case '7':case '8':case '9':console.log('秋季');break;case '10':case '11':case '12':console.log('冬季');break;};</script>

循環(huán)結構:

while循環(huán)、do-while循環(huán)、for循環(huán)、for-in循環(huán)、for-of循環(huán):

<script>// while循環(huán)語句:先判斷條件是否成立,成立執(zhí)行大括號中的內(nèi)容,否則不執(zhí)行大口號中的內(nèi)容// while(循環(huán)條件){// 循環(huán)體// 計數(shù)器// }// while循環(huán)特點:先判斷,后循環(huán),有可能一次循環(huán)體都不執(zhí)行var i = 0;while (i < 10) {console.log(i);i++;};var i = 0;var sum = 0;while (i < 100) {sum += i;i++};console.log(sum);var i = 1;sux = 1;while (i <= 3) {sux = sux * i;i++;};console.log(sux);var i = 1;var sum = 0;while (i <= 100) {if (i % 2 == 0) {sum = sum + i;i++;} else {i++;};};console.log(sum);var sum = 0;var i = 1;while (i <= 100) {if (i % 2 != 0) {sum += i;};i++;};console.log(sum);var i = 1;while (i <= 100) {if (i % 7 == 0) {console.log(i);};i++;};var admin = prompt('請輸入賬號');var keyw = prompt('請輸入密碼');while (admin != 'admin' || keyw != '123') {admin = prompt('重新輸入賬號');keyw = prompt('重新輸入密碼');};console.log('登錄成功');//do-while循環(huán)語句:先執(zhí)行一次循環(huán),后判斷條件,成立繼續(xù)循環(huán),不成立就跳出循環(huán)。// do{// 循環(huán)體// }while(條件);// do-while循環(huán)特點:先循環(huán),后判斷,至少執(zhí)行一次循環(huán)體var i = 0;do {console.log(i);i++;} while (i < 10);do {var yn = prompt('我?guī)泦?#xff1f;請用Y或者N回答');} while (yn !== 'Y');console.log('謝謝夸獎');var sum = 0;var i = 0;do {if (i % 3 == 0) {sum += i;}i++;} while (i <= 100);console.log(sum);/* for循環(huán)語句:先執(zhí)行一次表達式1,然后判斷表達式2;如果不成立則直接跳出循環(huán),如果表達式2成立,執(zhí)行循環(huán)體的代碼,結束后,跳到表達式3執(zhí)行,然后跳到表達式2,判斷表達式2是否成立,不成立,則跳出循環(huán),如果表達式2成立,則執(zhí)行循環(huán)體,然后再跳到表達式3,再跳到表達式2,判斷是否成立,一直如此 */var sum = 0;for (var i = 1; i <= 100; i++) {sum += i;};console.log(sum);var sum = 0;for (var i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;};};console.log(sum);var sum = 0;for (var i = 1; i <= 100; i++) {if (i % 2 == 1) {sum += i;};};console.log(sum);var sum = 0;for (var i = 1; i <= 100; i++) {if (i % 3 == 0) {sum += i;};};console.log(sum);for (var i = 0; i < 6; i++) {for (var j = 0; j <= i; j++) {document.write('*');};document.write('<br>');};// for in循環(huán):用于對數(shù)組索引或者對象的屬性進行循環(huán)操作,語法:// for (變量 in 對象){// 執(zhí)行的代碼// };var obj = {name: '明明',age: '18歲'};for (var i in obj) {console.log(i);};// for-of遍歷數(shù)組的元素,鍵值對對象會報錯(不遍歷某些對象,數(shù)組對象是可以遍歷的)// for (變量 of 數(shù)組){// 執(zhí)行的代碼// };for (var k of arr) {console.log(k); //1 '2' 3 '4' 'str'}for (var k of obj) {console.log(k); //Uncaught TypeError: obj is not iterable at test.html:34};</script>

break和continue關鍵字:

<script>for (var i = 1; i < 100; i++) {if (i % 7 == 0) {console.log(i);//7break;};};for (var i = 1; i < 22; i++) {if (i % 7 == 0) {console.log(i);continue;//7、14、21};};</script>

label語句:

label語句是用來控制break語句從哪個作用域跳出循環(huán),(默認是跳出當前循環(huán),外面的循環(huán)是不會被跳出的)label并非關鍵字,只要是非保留關鍵字都可以用來做label語句的標識符,如下面案例:

<script>iFor:for (var i = 0; i < 5; i++) {console.log('i:' + i);jFor:for (var j = 0; j < 5; j++) {console.log('j:' + j);if (j == 3) break iFor; //默認情況下回跳到jFor這里,也就是說i循環(huán)5次,每次i循環(huán)中j循環(huán)4次;當使用label語句后,i循環(huán)1次,j循環(huán)了4次};};</script>

throw語句:

當運行錯誤時,使用throw語句拋出一個異常的信息,如:

<script>throw "文件不存在";//控制臺輸出:test.html:18 Uncaught 文件不存在 </script>

try-catch-finally語句:

如果try代碼塊中的語句一旦拋出了異常,那么執(zhí)行流程會立即進入catch 代碼塊,如果try代碼塊沒有拋出異常,catch代碼塊就會被跳過。finally 代碼塊總會緊跟在try和catch代碼塊之后執(zhí)行,但會在try和catch代碼塊之后的其他代碼之前執(zhí)行(三個語句塊不一定同時出現(xiàn),三語句塊也可以嵌套在其他三語句中)。

<script>try {// 拋出異常時執(zhí)行的語句} catch (e) {//無異常時執(zhí)行的語句} finally {// 拋出異常或無異常時都執(zhí)行的語句}; </script>

Promise對象:

ECMAScript 6中提供promise對象操作延時和異步的流程控制,Promise 對象有以下幾種狀態(tài):

  • pending:初始的狀態(tài),即正在執(zhí)行,不處于 fulfilled 或 rejected 狀態(tài)。
  • fulfilled:成功的完成了操作。
  • rejected:失敗,沒有完成操作。
  • settled:Promise 處于 fulfilled 或 rejected 二者中的任意一個狀態(tài), 不會是 pending。
  • settled:Promise 處于 fulfilled 或 rejected 二者中的任意一個狀態(tài), 不會是 pending。
<script>// 為了解決回調(diào)地獄問題帶來的代碼不好維護問題,這里可以使用ES6提供的方法:promise,使用步驟如下:// 1.創(chuàng)建promise容器:一旦創(chuàng)建這個容器就會執(zhí)行里面的代碼new Promise(function(resolve, rejecte) {fs.readFile('./data/c.txt', 'utf8', function(err, data) {if (err) {rejecte(err)} else {resolve(data)}});}); //2.在容器中放一個函數(shù)并在其中執(zhí)行異步操作//案例:var p1 = new Promise(function(resolve, reject) {fs.readFile('./data/a.txt', 'utf8', function(err, data) {if (err) {reject(err)} else {resolve(data)}})})var p2 = new Promise(function(resolve, reject) {fs.readFile('./data/b.txt', 'utf8', function(err, data) {if (err) {reject(err)} else {resolve(data)}})})var p3 = new Promise(function(resolve, reject) {fs.readFile('./data/c.txt', 'utf8', function(err, data) {if (err) {reject(err)} else {resolve(data)}})})p1.then(function(data) {console.log(data)// 當 p1 讀取成功的時候// 當前函數(shù)中 return 的結果就可以在后面的 then 中 function 接收到,當你 return 123 后面就接收到 123,return 'hello' 后面就接收到 'hello',沒有 return 后面收到的就是 undefined// 真正有用的是:我們可以 return 一個 Promise 對象,當 return 一個 Promise 對象的時候,后續(xù)的 then 中的 方法的第一個參數(shù)會作為 p2 的 resolvereturn p2}, function(err) {console.log('讀取文件失敗了', err)}).then(function(data) {console.log(data)return p3}).then(function(data) {console.log(data)console.log('end')})</script>

提示:本文圖片等素材來源于網(wǎng)絡,若有侵權,請發(fā)郵件至郵箱:810665436@qq.com聯(lián)系筆者 刪除。
筆者:苦海

總結

以上是生活随笔為你收集整理的流程控制介绍,顺序结构、分支结构、循环结构、Promise对象、throw语句、break和continue关键字的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。