switch語句
//格式
switch (值){ //switch中的值,可以是數字,可以是字符串,甚至可以是表達式
case 值1:
代碼1;
break; //不能省略break,省略會有貫穿問題,代碼會一直往下執行,直到遇到break 為止
case 值2:
代碼2;
break;
...
default:
代碼n;
}
- 執行到
break
就結束switch語句 - 執行過程
- switch語句根據傳入的值進行對比, 匹配
case
中的值, 就執行case
中的代碼 - 沒有匹配值, 就執行
default
里的代碼
- switch語句根據傳入的值進行對比, 匹配
- switch性能比if高, 但if使用頻率在開發中用的多
for循環
//格式
for (初始語句; 循環判斷語句; 末尾語句 ){
循環體 (一段代碼)
}
- 初始語句: 在循環之前執行, 一般定義一個初始值為0的變量
- 循環判斷語句: 如果條件為真, 就執行循環體
- 末尾語句: 循環一次之后執行, 一般是對初始值中的變量自增或自減
- 循環體: 反復執行的一段代碼
break和continue的區別
- break在循環中, 立即退出循環, 強制執行循環后的語句(不執行下一次循環)
- continue在循環中, 立即退出循環(continue后的語句都不執行), 但是從循環的頂部繼續執行(執行下一次循環)
while語句
while (條件){
循環體
}
do{
循環體
}while(條件);
- while中一定要條件限制(如i++),如果沒有就是死循環
- do..while,至少執行一次循環(哪怕條件為假)
函數
function 函數名(參數1 ,參數2,....) {
代碼塊
}
- 函數的聲明:
- 往內存中保存一段代碼
- 函數命名規則和變量的命名規則一致
- 參數: 就是一個變量, 在函數生命中變量用于接收從外部傳過來的值
- 函數的調用:
函數名();
- 就是從內存中獲取代碼塊執行的過程
- 函數的參數:
- 有參數的函數叫有參函數, 無參數的函數叫無參函數
- 形參: 形式參數, 函數聲明時定義的參數, 形參是用來接收實參傳過來的值
- 實參: 實際參數, 函數調用時定義的參數, 往里面傳的值, 變量, 表達式都可以
- 注意: 函數使用前, 需要先聲明再調用
函數的返回值
-
return
的兩個作用- 函數返回值
- 結束函數, 不再往下執行
- 函數根據返回值可分為:
- 有返回值得函數, 無返回值的函數
函數的4種類型
-
無參數無返回值函數
function sum(){ //函數聲明 var a=1, b=1; console.log(a+b); } sum(); //函數調用
-
無參數有返回值函數
function sub(){ var a=1, b=1; return a-b; } console.log(sub());
-
有參數無返回值函數
function mult(a, b){ console.log(a* b); } mult(1, 1);
-
有參數有返回值函數
function div(a, b){ return a/b; //不寫return, 函數調用返回undefined } console.log(div(1, 1));
注意: 函數沒有重載, 函數名相同(接受的參數類型數量不同即可), 后定義的函數會覆蓋先定義的函數, 所以函數名不能相同
函數的注意點
- 有參函數, 實參的個數 > 形參的個數, 形參會依次從左往右取實參的值
- 有參函數, 實參的個數 < 形參的個數, 沒有接受值得形參值為undefined, 運行結果為NaN
- 函數不能自己調用自己, 將造成死循環(除非有限制條件, 遞歸調用)
-
函數名.length
: 獲取形參的參數個數 -
arguments.length
: 獲取實參的參數個數
全局變量 局部變量
js作用域是根據函數來劃分的, 變量存在的范圍就是作用域.
全局變量
- 定義: js中函數外部的變量就是全局變量, 可以在任何地方使用的變量
- 作用域:
script
開始標簽到結束標簽之間的范圍 - 注意: 全局變量要先聲明初始化后, 才能使用
局部變量
- 定義: 在函數內部的變量就是局部變量
- 作用域: 函數花括號里的范圍
- 注意:
- 局部變量在函數外取不到
- 局部變量若和全局變量同名, 局部變量會屏蔽全局變量作用范圍
- 變量取值遵循就近原則, 如果使用一個變量, 會在當前范圍內找, 一層一層往上找, 直到最上面也沒就報錯