• 技术文章 >web前端 >js教程

    简单理解JavaScript闭包

    高洛峰高洛峰2016-10-15 16:09:43原创589
    很多关于JS的书籍例如《JavaScript权威指南》或者《高程》都把闭包解释的晦涩难懂,萌新们是怎么也看不懂啊!不过别怕,今天我就用很简单的方式给大家讲解下到底什么是闭包。这是一篇面对新手的对于闭包的解释,没有晦涩生硬的语句,一看就能明白。如有不妥欢迎指正!
    要理解闭包,首先要理解变量的作用域。
    JS中变量作用域有两个:全局变量以及局部变量,顾名思义,全局变量就是在任何位置都可以引用的变量,局部变量就是只能在特定位置才能引用的变量,看下面代码。

    var globalScope="global scope";
    function f(){
        var localScope="local scope";
        console.log(globalScope);//global scope
    }
    console.log(localScope);//undefined

    在函数f()内可以访问到函数体外定义的globalScope,而在函数体外不能访问到函数体内定义的localScope,这就是全局变量与局部变量的区别。
    难道在函数体外就永远访问不到localScope了吗?非也,闭包就是为此而生。

    function f(){
        var localScope="local scope";
        return function(){
            console.log(localScope);
        }
    }
    f()();//local scope

    我们在函数f()外访问到了局部变量localScope,这里在函数f()内定义的匿名函数就是一个闭包!

    1.png

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Spring 5 新功能:函数式 Web 框架 下一篇:js几种生成随机颜色方法
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 聊聊Node.js path模块中的常用工具函数• JavaScript隐藏机制之垃圾回收知识总结• 手把手带你使用node开发一个命令行压缩工具• JavaScript总结之18种常用数组方法• node实战之开发一个mycli命令行工具
    1/1

    PHP中文网