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