程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-05(5)

闭包的理解

发布于2021-03-07 21:33     阅读(789)     评论(0)     点赞(5)     收藏(1)


function foo(){
	var a = 10;
	console.log(a);
	return function(){
		console.log(a);
	}
}
闭包的原理:垃圾回收机制
  • 预解析时,统计变量的出现次数,变量a出现了2次,count = {a:2}
  • 执行函数的时候,只有console.log(a)一次引用,a剩余被引用次数变为1,count = {a:1}
  • 因为引用没有被清空所以这个活动对象就被保存下来了,这种行为叫做闭包
闭包的目的:把局部变量的声命周期变为永久
为什么里面的函数要return?
  • 预解析时,{匿名函数:1}
  • return function 也算是使用
  • 如果不返回匿名函数,这个变量a就永远没有办法被使用了,返回匿名函数之后,匿名函数里面就永久的获得了这个变量的使用权
自由变量
  • 被闭包处理的局部变量,叫做自由变量
  • 自由变量的生命周期是永久的
  • 这个自由变量只有在内部函数可以被访问
例子
function outerFn(){
	var count = 0;
    function innerFn(){
    	count ++;
        console.log(count);
	}
	return innerFn;
}
var innerFn1 = outerFn();
innerFn1(); 

原文链接:https://blog.csdn.net/Nanhua_Jian/article/details/114435785




所属网站分类: 技术文章 > 博客

作者:前端霸主

链接:http://www.qianduanheidong.com/blog/article/33521/e55c2a6266be1cb4b8cf/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

5 0
收藏该文
已收藏

评论内容:(最多支持255个字符)