定义一个a方法,在a方法中定义一个b方法,并且b方法里面用到了a方法里面定义的变量,
那么此时就形成了闭包函数
// 闭包函数:两个函嵌套定义,里面的函数用到了外面函数的变量,此时这两个函数就形成了闭包。
function fun1(){
let num1 = 10
let num2 = 20
function fun2(){
let sum = num1 + num2
return sum
}
//返回里面的函数
return fun2
}
let r = fun1()
console.log(r);
console.log(r());
// 定义一个闭包函数,实现计算器功能
function myCalc(num1,num2,type){
switch(type){
case '+':
return function(){
return num1 + num2
}
case '-':
return function(){
return num1 - num2
}
}
}
//先准备好你的数据
let n1 = 100
let n2 = 50
//将你的数据传给计算器方法,由计算器方法,返回一个计算方法。
let js = myCalc(n1,n2,'+')
//在做具体的计算之前,还先做些其他的事情
console.log('查看用户是否登录');
n1 = 555
n2 = 145
console.log('检查用户的权限');
//其他事件准备好了后,执行计算方法
console.log(js());
// 闭包函数:两个函嵌套定义,里面的函数用到了外面函数的变量,此时这两个函数就形成了闭包。
function fun1(){
let num1 = 10
let num2 = 20
function fun2(){
let sum = num1 + num2
return sum
}
//返回里面的函数
return fun2
}
let r = fun1()
console.log(r);
console.log(r());
网友评论