• JS中的作用域和闭包


    作用域:在编程语言中,作用域控制着变量与参数的可见性及生命周期。JS确实有函数作用域,那意味着定义在函数中的参数和变量在函数外部是不可见的,而且在一个函数中的任何位置定义的变量在该函数中的任何地方都是可见的。

    var a = 1;
    var fs = function (){
        var b = 2;
        var c = 4
        var fun = function (){
            var c = 3;
            alert(a) //输出1
            alert(b) //输出2
            alert(c) //输出3
        }
        fun();
    }
     fs();

    闭包:作用域的好处是内部函数可以访问定义它们的外部函数的参数和变量(除了this和arguments)。我们通过调用一个函数的形式去初始化一个函数myObject,该函数将返回一个对象。此函数定义了一个value变量。该变量对increment和getValue方法总是可用的,但函数的作用域使得它对其他程序来说是不可见的。

    //返回一个对象
    var myObject = (function (){
        var value = 0;
        return {
            increment: function (inc){
                value += typeof inc === 'number' ? inc : 1;
                    },
            getValue: function (){
                return value;
            }
        }
    })();

    我们并没有把一个函数赋值给myObject。我们是把调用该函数后返回的结果赋值给它。注意最后一行的()。该函数返回一个包含两个方法的对象,并且这些方法继续享有访问value变量的特权。上例中getValue方法可以访问它被创建时所处的上下文环境。这被称为闭包。理解内部函数能访问外部函数的实际变量而无须复制是很重要的。

  • 相关阅读:
    导航守卫
    Java内部类详解
    requestAnimationFrame,Web中写动画的另一种选择
    requestAnimationFrame
    Linux下文件的打包、解压缩指令——tar,gzip,bzip2
    selenium的动作链 actionchains
    列表存储内存的两种形式
    使用timeit模块 测试两种方式生成列表的所用的时间
    selenium访问百度 然后获取百度logo的截图
    python 666
  • 原文地址:https://www.cnblogs.com/zhuifeng/p/3764608.html
Copyright © 2020-2023  润新知