js世界这么大,闭包想看看
2018-06-24 02:08:48来源:未知 阅读 ()
什么是闭包,为什么要用他?
闭包是能够访问其他函数作用域的函数。
我们来分析下句子成分(语文大神),闭包是函数,js函数的作用域分为全局作用域,局部作用域,eval作用域,并没有块级作用域形象的讲,每个函数都是一个小黑屋,能在小黑屋里看到外面的的世界,可是外界不知道小黑屋里是啥情况,如何打开门从小黑屋出来呢,就用到了闭包。
有几个概念必须要了解
作用域和作用域链
原来作用域和上下文作用域是两个不同的概念,本质上来说,作用域是基于函数的,上下文是基于对象的,作用域规定了当前执行环境对变量的访问权限,这是js中最重要一个概念。
作用域链(词法作用域):当查找变量的时候,会先从变量本身查起,如果本身没有就从父级对象上查找,一直查到全局上下文变量对象,若无返回undefine,这个由多个执行上下文对象构成的链表就叫做作用域链。
闭包的特点:
1、函数内再嵌套函数
2、内部函数可以引用外层的参数和变量。
3、参数和变量不会被垃圾回收机制回收
闭包的使用注意事项
函数会使得函数中的变量保存在内存中,会占用内存,所以只有在必要的时候使用它,如果不用的话要将他为null
MMP Show Me The Code
function example(){
var n=1;
function example2(){
alert(n);
};
return example2;
}
var result=example(); result(); // 1
在自己函数内部定义一个函数,然后再将函数值return回去
function example1(){
var n=1;
Add = function() { n+=1 }
function example2(){
alert(n);
}
return example2;
}
var result=example1(); result(); // 1 Add(); result(); // 2
解析:result();
函数定义了一个变量 ,调用时直接返回一个函数,example2里面没有n,沿着作用域链向上找到了n=1;
Add();执行后n的值为2;
然后example2向上查找时n就变成了2;
小结:整理了一下午,到处查资料,原来探究越深才知道知道的越少,这些东西很重要,检验你是否学好可以试着给别人讲懂。
由于自身能力有限,有些错误在所难免,欢迎指正,荣幸之至。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- JavaScript闭包函数访问外部变量的方法 2019-12-24
- JavaScript之对象基础 2019-08-14
- 函数作用域查找、闭包和匿名函数整理 2019-08-14
- Promise 学习心得 2019-08-14
- 世界上最大的软件注册表-----npm 2019-08-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash