闭包的来源:闭包源自函数的嵌套
闭包的产生: 如果外部函数的变量被内部函数的变量引用的话,就产生了闭包
闭包和函数的区别: 闭包传递的是函数,而函数传递的是变量
example:
// sum函数为外部函数
// add函数为内部函数
funtion sum(a){
funtion add(b) {
return a+b; // a为外部函数的变量,却在内部函数add中被调用,从而形成了闭包
}
return add;
}
let num2 = sum(2);
num2(4) // 结果为6
应用
求给定a,b 公共参数,变化x值,求公共直线的y值
function a_line(a, b){
function arg_y(x) {
y = a*x + b;
return y;
}
return arg_y;
}
let line1 = a_line(3,5); // 公共参数为3,5
line1(10) // x为10
line1(12) // x为 12