進擊的JavaScript小白(四)——函式
從初中開始,函式就已經出現了,好不容易畢業了,還被函式卡著脖子,這感覺真是。。。。
一、函式的作用
讓程式碼可以複用,提高程式碼的利用率
二、函式的宣告方式
1、函式的宣告語句
function fun () {
//函式主題程式碼
}
2、函式的表示式
var fun = function () {
//函式體
}
三、函式的呼叫
函式程式碼執行需要使用函式呼叫操作
fun();//函式名為fun
四、函式的引數
1、當一個函式內的某些值不確定時可以設定引數
2、形參:書寫在函式體的小括號中,用於佔位置,多個引數使用逗號分隔
3、實參:書寫在函式呼叫的小括號中,當函式呼叫後,會將實參值賦給對應的形參
五、函式的返回值
1、原因:在函式外面無法操作函式內宣告的變數,得不到函式計算的結果
2、方式:在函式中設定return值,並通過函式呼叫進行接收
3、return :return具備結束函式的功能,即跳出函式;也可以單獨使用,即不設定返回值,僅僅進行跳出函式操作;預設值為undefined
六、作用域
1、作用域表示起作用的範圍
2、全域性作用域:不在任何函式內。宣告在全域性作用域中的變數為全域性變數,在任意位置均可訪問。隱式宣告全域性變數:任意位置不加var的變數賦值操作
3、區域性作用域:可以在任何函式內。宣告在區域性作用域中的變數為區域性變數,只能在宣告這個變數的作用域內部訪問。
4、作用域的訪問規則
七、預解析
1、每個作用域程式碼執行前都會執行與解析操作,這是js自動完成的
2、查詢當前作用域中的var變數宣告,將宣告提升到當前作用域頂端,賦值保留在原位置
3、查詢當前作用域中的函式宣告語句,將函式體整體提升到當前作用域頂端,呼叫保留在原位置
4、由於函式宣告語句是整體提升,所以在書寫位置前後呼叫均可執行
5、函式表示式只能在書寫位置之後進行呼叫
八、函式的分類
1、基本函式
function fun () {}
var fun1 = function () {};
2、匿名函式
匿名函式沒有函式名,所以不能單獨使用
var fun = function () {};
3、立即執行函式(自呼叫函式)
1、效果:在書寫位置執行一次
2、作用:進行作用域的包裹,減少全域性變數的使用
3、使用位置:在每個功能外,使用立即執行函式包裹即可
4、注意點:立即執行函式後必須新增分號;
(function () {
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
console.log('這是一個立即執行函式。');
})();
4、回撥函式(將函式作為引數使用)
1、將函式作為引數使用,需要傳入的是函式體,所以一定不能在傳參時進行呼叫
2、 使用場景:當一個函式中的某些功能程式碼不確定時,可以使用函式引數(起到對程式碼包裹傳入的作用)。
5、將函式作為返回值
6、遞迴函式
函式內呼叫當前函式
var count = 0;
function fun () {
if (count >= 10) {
return;
}
console.log('這是函式fun的程式碼');
count++;
fun();
}
fun();
九、arguments的使用
1、用於獲取某個函式本次呼叫時傳入的所有實參
2、具有索引和長度,是偽陣列結構,沒有陣列的方法