刚开始学的对回调函数一直挺模糊, 今天通过在网上找资料好好学习一番。
先是其定义:回调函数是一段可执行的代码段,它作为一个参数传递给其他的代码,其作用是在需要的时候方便调用这段(回调函数)代码。
较好的理解是: 我们把 烟 比作 回调函数。 把 你 比作 其他代码 。
你买了烟后放在身上,一直不抽————然后你在事后之时。 惆怅万分之际, 再拿出 烟 抽一支,烟发挥了他的作用。
烟之前一直在你身上, 但是你却是在 你做完某事之后 才用到它的。
一、然后我们代码看代码(参考别人的) :
1)回调函数
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);
2)匿名回调函数
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);
3)模仿数组中的every方法
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'
2、回调函数特点
1)不会立刻执行, 正如定义中给出的一样回调函数作为代码片段可以根据需要在其特定条件下执行, 回调函数作为参数传递给一个函数的时候,传递的只是函数的定义并不会立即执行。
2) this,ES6推出了箭头函数, 箭头函数的推出需要在写回调函数的时候格外注意, this 是指向所在函数的上下文对象, 如果在在ES6采用箭头函数则需要注意 this使用, 箭头函数中this并没有上下文关系直说
3) 回调之美
- DRY,避免重复代码。
- 可以将通用的逻辑抽象。
- 业务逻辑分离
- 提高代码可维护性和可读性。
- 加强代码可读性。
- 分离专职的函数。