Web前端複習——Javascript複習(函式+分支結構)
1、函式
指的是為一個任務進行封裝在一個程式碼塊中。
(1)函式使用:宣告、定義和呼叫
function 函式名([引數變數列表]){
函式體:包含任務的步驟清單(程式碼塊)
[return 返回值]
}
如何呼叫:[var 返回值] = 函式名([引數值列表]);
函式只有呼叫時才執行(反覆呼叫,反覆執行)
2、變數作用域:一個變數的可用範圍
(1)JS中有兩種作用域——
a、全域性作用域:一個變數可以在程式的任何位置被訪問
b、函式作用域:一個變數僅在函式呼叫時,內部被訪問
(2)JS中有兩種變數——
a、全域性變數:定義在全域性作用域中的變數 又分為2種:
1.直接在任何函式外宣告的變數
全域性變數都屬於window——全域性物件
2.無論在任何位置,為從未宣告過的變數賦值時,會自動在全域性建立同名全域性變數
b、區域性變數:定義在函式作用域中的變數,又分為2種:
1.在函式定義內部宣告的變數
2.引數變數天生就是區域性變數
總結:(1)函式其實是引用型別的物件,
(2)函式名是指向函式物件的變數。
3、函式
(1)宣告提前:在程式執行前或函式被呼叫前
原理:將var宣告的變數和function宣告的函式,提前到當前作用域的頂部集中建立。
強調——僅宣告提前,賦值留在原地
(2)按值傳參
原理:js中無論變數間賦值或使用變數傳遞引數時,都是將變數中的值,賦值一個副本給對方
程式結構分為3大類
a、順序:程式預設從上到下逐行換行
b、分支:根據條件判斷的結果,有選擇的執行不同程式碼段
c、迴圈:程式可以反覆執行同一程式碼段,到臨界時退出
4、分支結構
需求分析——IPO(Input Process Output)
以一個案例作為分析——
·編寫一個收銀櫃臺收款程式,
·根據商品單價、購買數量以及收款金額計算並輸出應收金額和找零
分析:
·定義輸入——單價、數量、金額
·定義輸出——應收金額、找零
·設計資料結構——多組表示單價和購買數量的變數
Input:price、count、money
Output:total、change
Process:total = price * count
change = money - total
分支結構 VS 三目/短路
如果只是返回值——三目/短路
如果操作複雜——分支結構
(1)if-else
(2)switch-case結構:根據不同的條件執行不同的程式碼段
原理——用switch中的表示式的值和case中的值做“全等”比較
知識點1:break
它是停止當前結構的執行,並跳出當前結構
知識點2:switch VS else if
若“條件是全等比較”時,首選“switch-case”
若需要靈活定義條件時,需要使用“else if”
5、迴圈結構(3種)
讓程式反覆執行一段程式碼段,達到臨界條件,停止。
3要素——迴圈條件、迴圈變數、迴圈體
(1)while
語法:
var 迴圈變數 = 初值;
while(迴圈條件){
迴圈體;
迭代變化迴圈變數;
}
退出迴圈:2種方式
a、自然退出:不滿足迴圈條件時,自動退出迴圈
b、手動退出:程式設計師在迴圈體使用break強行退出迴圈
(2)do-while迴圈
語法:
var 迴圈變數 = 初值;
do{
迴圈體;
迭代變化迴圈變數;
}while(迴圈變數);
總結:while和do-while區別
當第一次條件滿足時,while、do-while完全相同;
當第一次條件不滿足時。
do-while:至少會執行一次
while:一次都不執行
注意——當條件第一次都不滿足時,do-while也會執行一次。
js中沒有塊級作用域,分支/迴圈結構出了結構照樣使用。
(3)for迴圈
語法:
var 迴圈變數 = 初值;
for(迴圈變數;迴圈體判斷;迭代變化迴圈變數;)
){
迴圈體;
}