js闭包

定义(满足条件)

  • 一个函数中要嵌套一个内部函数,并且内部函数要访问外部函数的变量
  • 内部函数要被外部引用

例:

//1
function eat(){
 var food = "bai";
 console.log(food);
}
eat(); // bai     执行完方法后food没有指向被销毁
console.log(food); // 没有可访问的变量 报错  

//2
function eat(){
 var food = 'bai';
 return function(){
 console.log(food);
 }
}
var look = eat();
look(); // bai
look(); // bai
//eat()执行完毕 可是look依然被引用所以变量保存了下来
//3
var school = function () {
 var s1 = "张三";
 var s2 = "李四";
 var team = function (project) {
 console.log(s1 + s2 + project);
 }
 return team;
}
var team = school();
school.team("在工作"); // 张三李四在工作
team.team("在嗨皮"); // 张三李四在嗨皮
//school()执行完毕 可是team依然被引用所以变量保存了下来

闭包的优点缺点

  • 通过闭包可以让外部环境访问得到函数内部的局部变量。
  • 通过闭包可以让全局变量持续保存下来,不随着它的上下文环境一起销毁。(消耗内存)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值