美文网首页
javascript中的闭包

javascript中的闭包

作者: 这里王工头 | 来源:发表于2019-01-31 00:11 被阅读0次

欢迎访问我的博客https://qqqww.com/,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~

文章目录

  • 1 闭包是什么
  • 2 实例
  • 3 变量的作用域

1 闭包是什么

当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父> 函数内部的其它变量,如果返回的这个函数在外部被执行,就产生了闭包

2 实例

根据作用域链的规则,底层作用域没有声明的变量,会向上一级查找,找到就返回,没找到就一直找,直到window的变量,没有就返回undefined,这里明显count 是函数内部的flag2 的那个count

    var count = 10   //全局作用域 标记为flag1
    function add () {
        var count = 0    //函数全局作用域 标记为flag2
        return function(){
            count += 1   //函数的内部作用域
            alert(count)
        }
    }
    var s = add()
    s() //输出1
    s() //输出2

3 变量的作用域

变量的作用域分类:全局变量和局部变量

特点:

  1. 函数内部可以读取函数外部的全局变量;在函数外部无法读取函数内的局部变量
  2. 函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量

使用闭包的注意点:

  1. 滥用闭包,会造成内存泄漏:由于标识为flag2count被闭包所引用,所以在内存中不会被回收,造成内存泄漏
  2. 会改变父函数内部变量的值:所以,如果把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值

相关文章

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

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

  • javascript中闭包是什么

    javascript中闭包是什么 JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。闭包就...

  • JavaScript 闭包问题

    1.闭包的概念 JavaScript中什么是闭包?首先我们要知道在JavaScript中,函数中声明变量函数外是无...

  • JavaScript 中 闭包 的详解

    闭包是什么 在 JavaScript 中,闭包是一个让人很难弄懂的概念。ECMAScript 中给闭包的定义是:闭...

  • JavaScript 中的闭包

    闭包是什么 在 JavaScript 中,闭包是一个让人很难弄懂的概念。ECMAScript 中给闭包的定义是:闭...

  • JavaScript----闭包

    javascript之闭包 闭包的概念     闭包(closure)是 JavaScript 的一种语法特性。 ...

  • JavaScript闭包的理解

    前言 在JavaScript中,闭包对于JavaScript的意义无异于指针在c++中的意义。理解闭包是我们掌握J...

  • js经典题目

    1闭包 链接:学习Javascript闭包(Closure) setTimeout在js单线程中只是放在队列中并未...

  • JavaScript之理解闭包

    一个简单的闭包 例1 理解闭包 闭包是指在 JavaScript 中,内部函数总是可以访问其所在的外部函数中声明的...

  • 你不可不知道的 JavaScript 作用域和闭包

    原文出处:JavaScript Scope and Closures 作用域和闭包是 JavaScript 中重要...

网友评论

      本文标题:javascript中的闭包

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