自定義回撥函式傳遞值
阿新 • • 發佈:2018-12-03
回撥函式是一段可執行的程式碼段,它作為一個引數傳遞給其他的程式碼,其作用是在需要的時候方便呼叫這段(回撥函式)程式碼。
回撥函式
?1 2 3 4 5 6 7 8 9 10 11 12 |
function
addSqua(num1, num2, callback){
var
sum = num1 + num2;
return
callback(sum);
}
function squa(num){
return
num*num;
}
let num = addSqua(1, 2, squa);
console.log(num);
//=>9 |
匿名回撥函式
將匿名函式直接作為函式引數傳遞給函式, 這也是我們程式設計一般採用的
?1 2 3 4 5 6 7 8 9 |
function
addSqua(num1, num2, callback){
var
sum = num1 + num2;
return
callback(sum);
}
let num = addSqua(1, 2,
function
squa(num){
return
num*num;
});
console.log(num);
//=9
|
模仿陣列中的every方法
在Array.prototype中新增類似與every一樣的方法
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Array.prototype.myEvery =
function
(callback) {
if
(
typeof
callback ===
'function'
) {
for
(let i = 0; i <
this
.length; i++) {
if
(callback(
this
[i])) {
return
false
;
}
}
return
true
;
}
return
true
;
}
let op = [3, 6,
'every'
, 9,
'each'
];
op.myEvery(
function
(value) {
console.log(value);
})
// 3
// 6
// 'every'
// 9
// 'each'
|
回撥函式特點
- 不會立刻執行, 正如定義中給出的一樣回撥函式作為程式碼片段可以根據需要在其特定條件下執行, 回撥函式作為引數傳遞給一個函式的時候,傳遞的只是函式的定義並不會立即執行。
- this,ES6推出了箭頭函式, 箭頭函式的推出需要在寫回調函式的時候格外注意, this 是指向所在函式的上下文物件, 如果在在ES6採用箭頭函式則需要注意 this使用, 箭頭函式中this並沒有上下文關係直說, 有興趣的可以檢視ES6 阮一峰, 再次奉上傳送門
回撥函式的優點和使用場景是個閉包
回撥函式是閉包的簡單使用,也就是說它能訪問到其外層定義的變數。