作为一个初学者如何简单地理解闭包

Posted wljqds

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作为一个初学者如何简单地理解闭包相关的知识,希望对你有一定的参考价值。

闭包最直接的定义:函数可以记住并访问所在的词法作用域时,就产生了闭包,即使这个函数是在当前词法作用域之外执行的。
如下代码:

function foo() 
  var a = 1;
  function bar() 
    console.log(a);
  
  bar();


foo(); // 1

kyle给的一个定义,首先给人的第一感觉就是,这不就是在说作用域的查找规则吗?因为就算一个初学者不懂闭包,依然能理解这种结果,原因很简单,因为bar函数是嵌套在foo函数中。确切来说,这并不算是闭包。这种作用域的查找规则只是闭包的一部分。

真正的闭包应该像下面的代码一样:

function foo() 
  var a = 1;
  function bar() 
    console.log(a);
  
  return bar;


let baz = foo();
baz(); // 1
// 嗨,这就是闭包的威力

以上是关于作为一个初学者如何简单地理解闭包的主要内容,如果未能解决你的问题,请参考以下文章

深入理解JavaScript的闭包特性如何给循环中的对象添加事件

javascript闭包的理解

JavaScript闭包函数的理解

js闭包的理解

js 闭包 理解 copy

如何发送电子邮件附件?