码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-07-31 23:51:32      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:cti   定义   函数   let   简单   fun   bar   str   部分   

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

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
// 嗨,这就是闭包的威力

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

标签:cti   定义   函数   let   简单   fun   bar   str   部分   

原文地址:https://www.cnblogs.com/wljqds/p/11279792.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!