javascript之闭包基础

闭包基础

function f1() {
var n = 1;
function f2() {
alert(n++);
}
return f2;
}
//闭包:能够访问一个函数内部变量的函数 f2就是一个闭包
var f = f1();//调用f1之后返回闭包函数
f();//1
f();//2*/


//原因:闭包函数引用了外部函数的变量,导致外部函数变量不会立即被回收
//闭包延长了函数内部变量的生命周期


//注意: 函数的参数也是局部变量,也相当于是函数内部声明的一个变量
//闭包可以将外部函数的形参保留到内存中不被释放
function f1(n) {
function f2() {
alert(n++);
}
return f2;
}


var f = f1(1);
debugger;//断点调试,让代码停在这里
f();//1
f();//2
f = f1(1);
f();//1
f();//2


//在浏览器中验证f2是一个闭包
//进入到闭包函数之后,在浏览器右侧出现Closure就是一个闭包结构


//闭包典型的写法
//注意:闭包中使用this 很可能指的是window对象
function f4() {
var n = 1;
return function() {
alert(n++);
alert(this.n);
}
}


var f = f4();
f();//1 undefined 相当于window.f();
f();//2 undefined

var n = 1;
function f2() {
alert(n++);
}
return f2;
}
//闭包:能够访问一个函数内部变量的函数 f2就是一个闭包
var f = f1();//调用f1之后返回闭包函数
f();//1
f();//2


//原因:闭包函数引用了外部函数的变量,导致外部函数变量不会立即被回收
//闭包延长了函数内部变量的生命周期


//注意: 函数的参数也是局部变量,也相当于是函数内部声明的一个变量
//闭包可以将外部函数的形参保留到内存中不被释放
function f1(n) {
function f2() {
alert(n++);
}
return f2;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值