js闭包

作者: 海晏河清_富贵荣华 | 来源:发表于2020-06-07 11:49 被阅读0次
1、js的闭包
function a(){
    var i = 0;
    function b(){
        alert(i++);
   }
   return b;
}

var c = a();
c();

执行完 var c = a()后,变量c实际指向函数名b,再执行 c()会alert(1)[第一次],这段代码创建了一个闭包。因为函数a外的变量引用了函数a内的函数
当函数a内部的函数b,被函数a外的变量引用时,就创建了一个闭包

2、闭包的作用

a执行完,并返回后,闭包使js的垃圾回收机制GC不会回收a所占用的资源,因为函数a的内部函数b的执行需要依赖a中的变量

  • 1、可读取函数内部的变量
  • 2、让这些变量的值适中保持在内存中。
3、闭包与this对象

在闭包中使用this对象会导致一些问题,因为匿名函数的执行具有全局性,this通常指向window代码
把外部作用域的this对象保存在一个闭包能够访问的变量里面,就能让闭包访问该对象

var name = "The Window"
var object = {
    name = "My Object",
    getName:function(){
         var that = this;   //有此语句,指向My Object,无此语句,指向The Windwo
         return function(){
             return that name;
         }
   }
}
alert(object.getName(){})
4、Js插件中闭包的应用
     (function(){
            alert("...")
     })

相关文章

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • JS闭包

    JS闭包 闭包练习

  • JS闭包问题(二)

    在之前的JS闭包问题(一)文章中大概介绍了一下JS闭包,同时讲了闭包与变量之间的问题,今天我们继续聊闭包,聊聊闭包...

  • JS闭包大结局(JS闭包系列3)

    在上一篇中再谈JS闭包(JS闭包系列2),我详细的介绍了JS中的变量作用域相关的概念,结合第一节关于JS闭包(JS...

  • JS闭包入门

    最近有看到朋友的面经里提到的JS闭包的问题,就想研究研究,以下是我对JS闭包的简单理解。 到底什么是JS闭包? 定...

  • 学习JavaScript闭包和作用域笔记

    JS JavaScript闭包和作用域 闭包 JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外...

  • 再谈JS闭包(JS闭包系列2)

    这篇文章,来继续谈谈Javascript闭包的剩余问题。因为在上一篇文章中关于JS闭包(JS闭包系列1)主要简单的...

  • 简单的聊一下闭包

    js中的闭包 闭包是学习js中永远也绕不过去的一个坎,那么,今天我们就去一段简单的代码开始聊一聊闭包 什么是闭包 ...

  • 浅谈闭包

    js中的闭包 闭包是学习js中永远也绕不过去的一个坎,那么,今天我们就去一段简单的代码开始聊一聊闭包 什么是闭包 ...

  • 闭包??

    什么闭包,闭包有什么用?http://js.jirengu.com/pogadikofa/1/闭包是在某个作用域内...

网友评论

      本文标题:js闭包

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