前端面试之闭包理解

讲以前我想说说我面试的经验,懒散了许久的我,在第一次面试必须被pass掉了。可是经过此次面试我也进行了深入的检讨。虽说有将近两年开发经验的我,可是真的只懂得些皮毛,至于它底层的原理是怎么实现的,说不出个因此然了,面试了一家,那个面试官超nice,还给了我不少好的建议,我也默默的想作出相应的改变,好比真的须要多夯实基础,不少公司比较重视基础,而不是说你懂了有哪些框架,好了,不在这里噼里啪啦的乱讲一通了,后期有空会把面试遇到的面试题跟你们分享哦,敬请期待!哈哈哈。。。。面试

好咯,如今来讲说闭包,什么是闭包?闭包的做用是什么呢?闭包

用我本身的话来讲,我认为有两点①、闭包就是可以读取其余函数内部变量的函数。框架

               ②、将函数内部和函数外部链接起来的桥梁。函数

               ③、可能说的不对,欢迎你们提出意见,哈哈。spa

首先来看一个例子code

function foo(){ var n=0; } foo() console.log(n);//n is not defined
按照古老定义,包含变量n的函数foo就是闭包,可是因为变量n在做用域外,因此报这个错误
可是咱们要怎么获取到n的值呢,以下
var n=0; function foo(){ var n=0; } foo();

我的理解一、嵌套在foo函数里的bar函数就是闭包blog

function foo(){ var a=2; bar(); function bar(){ console.log(a);//2
 } } foo();

2.闭包是指在函数声明时的做用域之外的地方呗调用的函数作用域

function foo(){ var a=2; function bar(){ console.log(a);//2
 } return bar; } foo()();

3.上面写法的缩写就变成了开发

function foo(){ var a=2; return function(){ console.log(a)//2
 } } foo()();

4.在foo()函数做用域声明,在bar2函数的做用域被调用的bar2函数是闭包io

function foo(){ var a=2; function bar2(){ console.log(a);//2
 } bar(bar2); } function bar2(fn){ fn(); } foo();

以上就是我对闭包的理解,可能讲的也不是很清楚,可是最主要仍是要本身操做了才能更好的理解。

相关文章
相关标签/搜索