美文网首页
# 闭包是什么

# 闭包是什么

作者: 莫帆海氵 | 来源:发表于2021-05-17 22:12 被阅读0次

闭包让你可以在一个内层函数中访问到其外层函数的作用域。在 Javascript 中,每创建一个函数同时都会创建一个闭包,一个函数包含对外层函数作用域的引用就叫闭包。

以下是一个简单的闭包示例

function foo() {
    var name = 'goo'
    return function bar() {
        return name
    }
}

词法一词指的是,词法作用域根据代码中声明变量的位置来确定该变量在何处可以可用

Javascript 的函数形成闭包,闭包是由函数以及声明该函数的词法作用于环境组合而成。该环境包含了这个闭包创建时作用域内的任何局部变量

闭包的用法

避免变量提升

通过包裹函数嵌套函数,让定义的变量不会提升到全局,造成变量污染。

(function(){
    var name = 'go'
    
    function bar() {
        return name
    }
    
    bar()
})()

模块化

通过闭包来实现模块化,可以定义私有的变量和方法同时也可以定义公共的方法。

var p = function() {
    var name = 'go'
    
    function getName() {
        return name
    }
    
    function setName(v) {
        name = v
    }
    
    return {
        getName,
        setName,
    }
}

解决循环中的变量传递问题

比如下面通过循环来给多个 dom 绑定事件,因为变量的提升,造成 click 的事件引用的都是同一个变量,最后都是同一个值

var arr = [1,2,3,4,5]
for (var i = 0; i < arr.length; i++) {
    document.getElementById('id' + i).onClick = function() {
        console.log(i)
    }
}

通过用匿名函数来包裹事件绑定,使变脸和事件的回调函数在一个闭包中

var arr = [1,2,3,4,5]
for (var i = 0; i < arr.length; i++) {
    (function(){
        var ii = i
        document.getElementById('id' + ii).onClick = function() {
            console.log(ii)
        }
    })()
}

相关文章

  • Python闭包与几种装饰器浅析

    闭包 闭包是什么?闭包可以保存外部函数的变量,可以增加代码的复用性,那具体闭包的构成是什么? 1. 闭包构成条件 ...

  • 前端常见问题总结

    什么是闭包?闭包的用途是什么?闭包的缺点是什么? 什么是闭包 闭包:内部函数总是可以访问其所在的外部函数中声明的参...

  • 闭包、call-apply-bind 的用法 、HTTP状态码

    一、什么是闭包?闭包的用途是什么?闭包的缺点是什么? 答 :1、什么是闭包:如果一个函数用到了外部的变量,那么这个...

  • 闭包,call、apply、bind 的用法,HTTP 状态码

    什么是闭包?闭包的用途是什么?闭包的缺点是什么?• 闭包:如果一个函数用到了外部的变量,那么这个函数加这个变量就叫...

  • 闭包的总结

    围绕:闭包是什么?闭包的用途有哪些?闭包的缺点是什么? 这三个问题来进行总结 一、何为闭包?如果一个函数用到了外部...

  • Python 闭包使用注意点

    1 Python 闭包 今天,聊下 python 的闭包。在函数编程中经常用到闭包。 闭包是什么,它是怎么产生的及...

  • web前端必知篇:闭包的理解

    闭包这玩意,在面试的时候经常被问到。如果你还不了解,小编就简单的讲解一下! 闭包是什么,闭包的优点是什么? 闭包就...

  • 闭包是什么

    闭包是什么? 闭包是一个函数 闭包可以使用在它外面定义的变量 闭包存在定义该变量的作用域中 各种专业文献上的"闭包...

  • JavaScript 中 闭包 的详解

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

  • JavaScript 中的闭包

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

网友评论

      本文标题:# 闭包是什么

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