美文网首页
闭包笔记

闭包笔记

作者: 101架钢琴 | 来源:发表于2017-03-23 16:13 被阅读0次

########js链式作用域:
1、子对象会一级一级向上寻找父对象的变量,父对象的所有变量,对子对象都是可见的
2、父对象无法获取子对象内的局部变量

########从外部读取局部变量
方法:在函数的内部,再定义一个函数。
内部函数可以读取外部函数的局部变量,那把内部函数作为返回值,就可以在外部函数读取内部函数的变量了。

闭包

闭包就是能够读取其他函数内部变量的函数
在立即执行函数中

Paste_Image.png

在一个立即执行函数中,有一个局部变量local,有一个函数foo,foo里面可以访问到local变量,这就是一个闭包。

function foo(){
  var local = 1;
  function bar(){
    local++;
    return local;
  }
  return bar;
}
var func = foo();
func();

这里,local变量和bar函数组成了一个闭包。
因为需要局部变量,所以把local放在一个函数里,函数套函数只是为了造出一个局部变量,与闭包无关。
return bar只是为了bar能被使用,也与闭包无关。

闭包用途

1、读取函数内部的变量
2、让这些变量的值始终保持在内存中

************我是分割线*******************************

例子:让下面的函数输出3

var fnArr = [];
for (var i = 0; i < 10; i ++) {    
    fnArr[i]=function(){
      return i;
    };
}
console.log( fnArr[3]() );//10
1、形成闭包:加入立即执行函数
var fnArr = [];
for (var i = 0; i < 10; i ++) {
  (function(n){
    fnArr[i]=function(){
      return n;
    };
  })(i);    
}
console.log( fnArr[3]() );//3
2、形成闭包
var fnArr = [];
for (var i = 0; i < 10; i ++) {
  (function(){
    var n=i;
    fnArr[i]=function(){
      return n;
    };
  })();    
}
console.log( fnArr[3]() );
3、形成闭包
var fnArr = [];
for (var i = 0; i < 10; i ++) {
    fnArr[i] =(function(){
      var n=i;
      return function(){
        return n;
      }        
    })();       
}
console.log( fnArr[3]() );

此篇仅是看过的几篇关于闭包文章的一个笔记而已,摘取了一些文章的精华记录下来:
https://zhuanlan.zhihu.com/p/22486908JS 中的闭包是什么?
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html学习Javascript闭包(Closure)

相关文章

  • Swift学习笔记(1)

    SWift学习笔记 闭包 闭包表达式 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 ...

  • JavaScript闭包学习笔记

    @(JS技巧)[闭包] JavaScript闭包学习笔记 什么是闭包? 有些情况下,函数调用完成之后,其执行上下文...

  • javascript中的闭包

    该文章是MDN闭包文档学习笔记,方便日后查阅。如要查阅源文档,请移步闭包文档传送门 闭包 闭包是函数和声明该函数的...

  • 闭包笔记

    ########js链式作用域:1、子对象会一级一级向上寻找父对象的变量,父对象的所有变量,对子对象都是可见的2、...

  • 闭包笔记

    闭包的定义 MDN 的定义: 闭包是函数和声明该函数的词法环境的组合。 词法作用域 参考作用域链: 函数在执行过程...

  • avaScript 闭包的理解

    JavaScript 学习笔记之闭包 这篇文章是我学习闭包的笔记与总结,后面会有一些例子,结合画图的形式来理解,什...

  • JavaScript学习笔记(4) 闭包详解(Closure A

    《JavaScript学习笔记(4) 闭包详解(Closure Are Not Magic)》 ---- 写在开头...

  • swift-闭包

    闭包 闭包定义 闭包简化 - 尾随闭包 闭包参数 闭包返回值 闭包的循环引用

  • swift学习笔记 ⑥ —— 闭包

    Swift学习笔记 - 文集 闭包,就是能够读取其他函数内部变量的函数。Swift 中的闭包与 C 和 OC 中的...

  • 闭包,闭包,闭包

    1、这家伙到底是什么? 网上关于这个的讨论的太多了太多了,有各种的举例子,但是大部分还在寻找这个答案的小伙伴对于变...

网友评论

      本文标题:闭包笔记

      本文链接:https://www.haomeiwen.com/subject/oaignttx.html