为了账号安全,请及时绑定邮箱和手机立即绑定

如何判断是不是闭包?

如何判断是不是闭包?

慕桂英4014372 2018-09-14 14:13:09
我知道下面这个是闭包function makeFunc() {      var name = "Mozilla";      function displayName() {         alert(name);       }      return displayName;     }         var myFunc = makeFunc();     myFunc();有人说,在执行过程完毕后,返回函数,或者将函数得以保留下来,即形成闭包。那么,是不是下面的第一种就可以算作闭包了,红皮书说,函数内部创建另一个函数叫闭包,那么如何解释下面两个情况?         var a = 1     var b = function(){    console.log(a)     }         var c = 1     function d(){    console.log(c)     }《javascript权威指南》 (第六版)第8章第6节:从技术的角度讲,所有的JavaScript函数都是闭包:它们都是对象,它们都关联到作用域链。《javascript高级程序设计》(第三版)第7章第2节:闭包是指有权访问另一个函数作用域中的变量函数;
查看完整描述

1 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

真巧,这几天也在看有关闭包的资料,然而,看了半天,资料中对闭包的各种定义乱飞,最后我也不知道该如何去定义闭包了,好纠结,直到昨天看到了一篇文章,才认识到自己至于在闭包的定义上面纠结吗

下面是对文章的一部分摘抄:

闭包,有人说它是一种设计理念,有人说所有的函数都是闭包。我不知道如何去定义它,我也不准备去定义它,定义它就是限制了对它的理解。

我们依赖光来看清世间万物,光却遮住了黑暗。如同你脚下的路,让你看不清前行的方向。

在这里写一点我对闭包的理解。理解闭包的关键在于:外部函数调用之后其变量对象本应该被销毁,但闭包的存在使我们仍然可以访问外部函数的变量对象。

文章链接


查看完整回答
反对 回复 2018-10-10
  • 1 回答
  • 0 关注
  • 685 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信