JavaScript之語句,迴圈
JavaScript中語句主要分為三類:順序,分支,迴圈。
1.順序語句:
按照循序依次執行,最普通常見的語句,這裡不多贅述。
其結構如下
2.分支語句:
根據條件判斷,不同的結果執行不同的語句。
其大致結構如下
常用的分支語句有
if……else……和switch……case……
if語句的幾種
1.
if(判斷條件){
條件成立時執行
}
舉例:
var i=12;
if(i>10){
alert("i大於10");
}
2.
if(判斷條件){
條件成立時執行
}else{
條件不成立時執行
}
舉例:
var i=9; if(i>10){ alert("i大於10"); }else{ alert("i不大於10"); }
3.
if(判斷條件){
條件成立時執行
}else if(第二個判斷){第二個判斷成立
}else{
兩個判斷都不成立時執行
}
舉例:
var i=9;
if(i>10){
alert("i大於10");
}else if(i==10){
alert("i等於10");
}else{
alert("i小於10");
}
4.
if(第一個判斷){
if(第二個判斷){
兩個判斷都成立
}else{第一個判斷成立,第二個判斷不成立
}
}else{兩個判斷都不成立
}
舉例:
var i=10;
if(i>=10){
if(i==10){
alert("i=10");
}else{
alert("i>10");
}
}else{
alert("i<10");
}
switch……case……語句:
switch語句適用於分支較多的情況
switch(變數){
case 判斷1:
執行的語句;break;
case 判斷2:
執行的語句;break;
……
default:
執行語句;
}
注意:break是跳出當前{}語句
例項:
var i=parseFloat(prompt("請輸入一個數字"));
var k=prompt("請輸入運算子");
var l=parseFloat(prompt("請在輸入一個數字"));
switch(k){
case "+":
alert(i+l);break;
case "-":
alert(i-l);break;
case "*":
alert(i*l);break;
case "/":
alert(i/l);break;
default:
alert("輸入有誤");
}
這還是一個簡單的計算過程。
需要注意的是:使用者輸入的是字串,所以數字需要用parseInt(),parseFloat()轉換為整數或小數,而case中要用“”代表運算子,不能直接用case +
迴圈語句:
迴圈語句主要有for迴圈和while迴圈
fo迴圈:
for迴圈的特點是控制迴圈的次數
四要素:初始值 迴圈條件 狀態改變 迴圈體
for(初始值;迴圈條件;狀態改變){
迴圈體;
}
其執行過程為:
初始值-判斷條件-迴圈體-狀態改變
-判斷條件-迴圈體-狀態改變
-判斷條件-迴圈體-狀態改變
……
判斷條件-迴圈結束
for(i=0;i<100;i++){
alert(i);
}
再迴圈中有幾個需要注意的點:
break:跳出整個迴圈
for(i=0;i<100;i++){
alert(i);
break;
}
則只輸出一個0.然後結束
continue:跳出本次迴圈
for(i=0;i<100;i++){
if(i==5){
continue;
}
alert(i);
}
4之後跳過5,直接6
i++與++i:
var a=i++;
把i的值賦給a然後i+1
也就是:
var a=i;
i=i+1;
var b=++i;
i+1然後把i的值賦給b
i=i+1;
var b=i;
舉例:
var i=1;//i=1
var a=i++;//把i的值也就是1賦給a,a=1,然後i自增,i=2
var b=++i;//i自增,i=3,把的值i賦給b,b=3
alert("a="+a+","+"b="+b);
while迴圈:
while迴圈的特點是操作不確定迴圈次數的迴圈
while(條件,可以為true){
}
var i=0;
while(true){
alert(i);
if(i>10){
break;
}
i++;
}
上程式碼執行後,會0,1,2,3…依次彈出,直到11。
下面是幾個簡單的迴圈例子:
//求100內奇數
var str="";
for(var i=0;i<100;i++){
if(i%2==1){
str=str+i+","+"n";
}
}
alert(str);
首先定義一個空的字串str,然後迴圈在i<100,中間巢狀if判斷i除以2的餘數為1,然後把字串拼接在一起,需要注意的是/n換行,上圖是沒有換行的結果
這裡需要注意一下:
轉義字元,反斜槓開頭,n r 換行 t製表符 " 正常“”
//100以內和7相關的數
var str="";
for(var i=0;i<100;i++){
if((i%7==0)||(i%10==7)||((i-i%10)/10==7)){
str=str+i+","+"n";
}
}
alert(str);
輸出100以內和7相關的數,這裡需要注意的是,將幾個和7相關的判斷條件用||一起放在判斷條件中,代表任何一個成立都可以
//輸出乘法口訣表
for(var i=1;i<10;i++){
for(j=1;j<10;j++){
if(i<=j){
alert(i+"*"+j+"="+i*j);
}
}
}
輸出乘法口訣表,
這裡需要注意的是乘法口訣表,也就是這裡要定義兩個變數來相乘,要用兩個迴圈巢狀起來
//籃球5米落下,每次彈起高度是原來的0.3,求彈起第6次高度
var h=5;
for(var i=0;i<6;i++){
h=h*.3;
}
alert(h);
這裡需要注意的是,首先定義原本的高度h=5米,然後用for迴圈控制迴圈6次,每次h乘以0.3
//一個芝麻0.000001kg,棋盤32個格子,,第一個格子1個,二個2個,三個4個,放滿需要多重的芝麻
var sum=0;//總數
var a=1;//每個格子數量
for(var i=0;i<32;i++){ //i=1,迴圈31次,如果i=0,迴圈32次,如果sum為1,所以迴圈應該是31次
sum=sum+a; //
a=a*2;//後一個格子等於前一個格子數量兩倍
}
alert(sum*.000001);
這裡尤其需要注意的是,順序,思維和語句的順序,正常來看,首先還沒有放的時候,總數sum=0,然後在迴圈中迴圈的初始值i也要為0,這樣迴圈32次,如果i=1,則只會迴圈31次,然後sum=sum+a;第一個格子的數量為1,然後a=a*2代表下一個格子的芝麻數量。
之前用的另一串程式碼
var sum=1;//總數
var a=1;//每個格子數量
for(var i=1;i<32;i++){ //i=1,迴圈31次,如果i=0,迴圈32次,如果sum為1,所以迴圈應該是31次
a=a*2;//後一個格子等於前一個格子數量兩倍
sum=sum+a;
}
alert(sum*.000001);
在這裡,第一個格子已經放了一個芝麻,所以sum=1,因此i=1控制迴圈31次而不是32次,這樣先a乘以2在sum=a。