JavaScript 面向对象学习笔记 -- 闭包

闭包

全局变量在函数内部可以访问。

var n = 999;
function f1() {
    console.log(n);
}
f1(); // 999

函数内部定义的变量,外部无法访问。

function f1() {
    var n = 999;
}
f1();
console.log(n); // 报错

外部访问函数内定义的变量。在函数里再定义一个函数。

function f1() {
    var i = 0;
    function f2() {
        console.log(i)
    }
    return f2;
}
f1()(); // 0

特点:f2在f1里面定义的,f1需要返回f2

用途:1. 读取函数内部的变量; 2. 让变量保留在内存中。

function f1() {
    var n = 1;
    nAdd = function() {
        n = n + 1;
    }
    function f2() {
        console.log(n);
    }
    return f2;
}
f1()(); // 1
nAdd();
f1()(); // 2

 

优缺点:

优点:

  • 有利于封装
  • 可以访问局部变量

缺点:

  • 内存占用严重,引起内存泄漏

转载于:https://www.cnblogs.com/lwl0812/p/9680076.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值