前言:
學習一門編程語言的基本步驟
(01)了解背景知識
(02)搭建開發環境
(03)語法規范
(04)常量和變數
(05)資料型別
(06)資料型別轉換
(07)運算子
(08)邏輯結構
8.邏輯結構——logic
程式=資料+演算法
程式分為順序執行,選擇執行,回圈執行
(1)流程控制—選擇執行
1)if陳述句 結果為真的時候
if(條件運算式){
陳述句1;
}
陳述句2;
注意:if后的大括號中如果只有一行陳述句,則可以省略大括號.
//if陳述句 //如果滿30就減15 var total=32; if(total>=30){//如果total金額大于等于30 total-=15;//在原來基礎上減15 } console.log(total);//17 //練習:宣告一個變數保存年齡,如果滿18,列印成年人 var age=19; if (age>=18) {console.log('成年人'); console.log('可以去網吧'); } var age=19; if (age>=18) console.log('成年人');//只有一行陳述句,的時候可以省略{},也可以寫一行 //練習:如果簽名內容為空,設定默認簽名 //宣告變數保存簽名內容,如果簽名為空,設定默認簽名‘這家伙很懶什么也沒留下’,列印簽名內容 var page='好熱啊'; //if (page==='')//判斷是否為空, if (!page) // !''->!false -> true {page='這家伙很懶,什么也沒留下'; } console.log(page);//好熱啊
在條件運算式中,有一些值默認代表false
數值型的false的情況:0,NaN,
字串型的false的情況:'',空字符
未定義的false的情況:undefined
空的false的情況:null
if (0) { console.log('hello'); }//不列印 if (1) { console.log('hello'); }//列印hello
2)if-else陳述句 如果前面是假就執行后面的條件運算式
if(條件運算式){
陳述句1;
}else{
陳述句2;
}
//if-else陳述句 //宣告變數保存性別,0/1,如果是0列印女,否則列印男 var sex=0; if (sex===0){ console.log('女'); }else{ console.log('男'); } //練習:宣告變數分別保存用戶名和密碼,如果用戶名是root,并且密碼是123456,列印登錄成功,否則列印登錄失敗 var uname='rojot'; var upwd='123456'; if (uname==='root' && upwd==='123456'){ console.log('登錄成功'); }else{ console.log('登錄失敗'); }
3)if-else 嵌套,解決多項分支選擇
if (條件運算式1){
陳述句1;
}else ...if(條件運算式n){
陳述句n;
} else{
陳述句n+1;//以上的條件運算式都是false,就執行該陳述句
}
//if-else 嵌套 //宣告變數保存一個人的成績,根據成績列印對應的漢字 var score=56; if (score>=90){ console.log('優秀'); }else if(score>=80 && score<90 ){ console.log('良好'); }else if(score>=70 && score<80 ){ console.log('中等 '); }else if(score>=60 && score<70 ){ console.log('及格'); }else{ console.log('不及格'); }
4)switch-case 是一種特殊的多項分支陳述句,只有一種比較方式,就是全等于===
switch-case ——轉換器-情況
break ——結束打破
switch(運算式){//通常是一個變數
case 值1 ://如果運算式的值是 值1,
陳述句1;
break;//結束后面的陳述句
...
default:
陳述句n+1;//如果運算式的值和case中的值比較都是false,才會執行n+1
}
注意:運算式在和case后的值比較的時候,使用的是全等于,要求值和型別都相同,
//switch-case陳述句 //根據星期的狀態碼,來列印對應的漢字0-6 var date=0; switch (date) { case 0: console.log('星期日'); break; case 1: console.log('星期一'); break; case 2: console.log('星期二'); break; case 3: console.log('星期三'); break; case 4: console.log('星期四'); break; case 5: console.log('星期五'); break; case 6: console.log('星期六'); break; default: console.log('錯誤的星期代碼'); }
總結1:對比 if-else嵌套和switch-case的區別
相同點:兩者都可以用于多項分支陳述句
不同點:if-else可以判斷相等或是不等的情況,使用 范圍更廣泛;
switch-case只能用于全等于的比較,結構上給為清晰合理,可讀性高,執行效率更高
(2)流程控制——回圈執行
回圈:一遍又一遍執行相同或是相似的代碼,
回圈的兩個要素:
回圈條件:控制執行回圈的次數,
回圈體:重復執行的相同或是相似的代碼
1)while回圈
while(回圈條件){
回圈體
}//當回圈條件為true的時候,回圈體運行中,回圈條件是false的時候,回圈結束
//while回圈 //回圈產生10-20之間所有的數字,并列印出來 var num=10; while (num<=20){//回圈條件 console.log(num); num++;//回圈體 } //練習:計算1-100之間所有偶數和 var i=1;//宣告變數i var sum=0;//宣告變數sum while (i<=100){//回圈條件,如果I小于等于100 if(i%2===0){//計算為偶數的條件, sum+=i; //sum等于sum加i } i++;//自增 } console.log(sum);//2550
2)break打破回圈
在回圈中,可以提前結束任何形式的回圈
isNaN()判斷一個值是否為NaN 是—>TRUE 不是—>false
//break打破回圈 //列印數字1-10 var i=1; while (true){//不停+1,沒有結束 console.log(i);//每回圈+1一次就列印一次數字 if (i===10){//當i為10的時候 break;//結束回圈 } i++;//回圈+1 }//輸出結果為1-10每個數字都列印一遍 // 在這里需要注意console.log(i)和 i++;的位置,位置不一樣,輸出的效果不一樣,我們這里的需求是列印數字1-10 /*————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/ //下面需要用到瀏覽器端函式,簡單解釋一下 //alert() 彈出警示(訊息)框 //prompt() 彈出提示(輸入)框,需要使用變數來保存輸入的值,默認型別是字串型別,如果輸入框中內容為空,回傳空字符(''),如果點擊取消回傳null、 //練習:宣告一個變數保存一個數字,無限回圈彈出提示框,并輸入數字,如果輸入的數字大于保存的數字,彈出警示框提示 ‘big’, //如果輸入的數字小于保存的數字,彈出警示框提示‘small’,否則彈出警示框提示‘right’,結束回圈, var num=102; while(true){ //彈出提示框 var str=prompt('input a number'); //如果輸入大于之前的值 if (num<str){ alert("big"); //如果輸入的值小于之前的數字 }else if (num>str){ alert("small"); }else{ //判斷是否為數字,如果不是,提示 var str2=Number(str); //isNaN,是否是NaN ——>true if (isNaN(str2)){ alert('input a number'); }else{ //猜對 alert("right"); break; }//注意這里空字符轉數值為0 } }
3)do-while回圈 先執行一遍回圈體,在判斷回圈條件,即使回圈條件為false,也會在執行一遍回圈體,
do{
回圈體
}while(回圈條件);
//do—while回圈 //回圈產生1-10之間所有的整數 var i=1; do{ console.log(i); i++; } while (i<=10); /*———————————————————————————————————————————————————————————————— */ //練習:宣告變數保存123456,回圈彈出提示框輸入密碼,如果輸入正確結束回圈, var upwd="123456"; do{ //保存輸入的密碼 var str=prompt('input password'); //判斷輸入的密碼是否正確 if (str===upwd){//如果正確 break;//結束回圈 } } while (true);//回圈條件, //其他寫法 var upwd="123456"; do{ //保存輸入的密碼 var str=prompt('input password'); } while (str!==upwd);//如果輸入的str保存的upwd不同,繼續彈出視窗
4)for回圈 運算式1:初始值,運算式2:回圈條件,運算式3:增量,可以分解多種可能 多個回圈條件中只有最后的一個起作用,
for(運算式1;運算式2;運算式3){
回圈體 ;
}
//for回圈 //計算1-20之間所有能被3整除的數字的乘積 var sum=1;//宣告變數sum for (var i=1;i<=20 ;i++ )//i初始值為1,回圈條件為小于等于20,i執行自增 { if (i%3===0){//如果i取余3等于0 sum*=i//sum等于sum乘以i } } console.log(sum);//列印sum //練習:計算1-100的和 for (var i=1,sum=0;i<=100;i++ ){ sum+=i } console.log(sum); //其他寫法 var i=1,sum=0; for ( ;i<=100;i++ ){//第一個運算式可以不用,但是要保留位置上的;分號,代表第一個運算式為空 sum+=i } console.log(sum); //練習:列印2000-2100年之間所有的閏年 //閏年:4年一閏,并且不能被100整除,或者能被400整除 for (var year=2000;year<=2100;year++){ if (year%4===0 && year%100!==0 || year%400===0){ console.log(year); } }
5) continue跳過特定條件繼續執行回圈
跳過后邊的回圈體,繼續執行增量,
//continue跳過 //練習:列印1-100之間所有的整數,排除能被3整除和能被4整除的數字 for (var i=1;i<=100 ;i++ ){//i初始值為1,回圈條件為小于等于100,i執行自增 if (i%3===0 || i%4===0){//如果i取余3等于0并且i取余4等于0 continue;//跳過此條件繼續執行回圈 } console.log(i);//列印i }
總結2:break和continue的區別
break :結束回圈,后續不會再執行后續的回圈
continue:跳過后邊的回圈體,繼續執行增量,也就是下一次回圈,
(3)回圈嵌套——nest
任何的回圈之間可以相互嵌套
//回圈嵌套 //回圈列印五次五顆* for (var i=1,str='';i<=5 ;i++ ){ //每次回圈拼接* str+='*'; } console.log(str);//列印結果 //以上代碼要執行五次,把以上代碼再次放到另一個回圈中 //外層回圈代表一共有多少行 for (var j=1; j<=5 ;j++ ){ //內層回圈,控制每行有多少星星 for (var i=1,str='';i<=5 ;i++ ){ //每次回圈拼接* str+='*'; }; console.log(str); }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/149378.html
標籤:JavaScript
