• 闭包的简单应用


    JavaScript的闭包

    变量的作用域:

    每个函数来定义作用域,函数内部用var来声明的,他们的作用域只在本函数内有用。函数可以用来创造函数作用域。此时的函数像一层半透明的玻璃,在函数里面可以看到外面的变量,而在函数外面无法看到函数里的变量。

    我们先来看一个例子,在例子中我们定义了三个函数,分别是funa ,funb,func,在每个函数里我们都用 var 独自声明了一个变量,然后进行打印。(代码)

    var funa = function(){
        var a = "sakura";
        console.log("I am "+a);
    }
     
    var funb =function(){
        var b = "naruto";
        console.log("I am "+b);
    }
     
    var func= function(){
        var c= "sasuke";
        console.log("I am "+c);
    }
    funa();
    funb();
    func();

    这时我们用node 运行程序是没有问题的!但是如果我们钥匙把变量 a  ,在funb 函数里打印,程序就会报错.(代码如下)

    var funb =function(){
        var b = "naruto";
        console.log("I am "+b);
        console.log(a);
    }

    如果这个例子我们理解了,那我们再来看一个更为复杂的例子。例子里先定义了 func1 函数,然后又在 func1 函数里定义了 func2 ,然后再func1里打印func2里的一个变量,这时是找不到变量的,程序会报错。

    var a = 1;
    var func1= function(){
        var b=2;
        var func2 = function(){
            var c= 3;
            console.log(b);//可以找到
            console.log(a);//可以找到
        }
        func2();
        //下面的c是找不到的。
        console.log(c);
    }
    func1();

    简单的闭包函数

  • 相关阅读:
    Java中两个Long对象如何比较是否相等
    微信小程序data数组push和remove问题
    微信小程序let和var以及const有什么区别
    小程序开发之弹出框
    Windows系统下如何卸载干净mysql
    jQuery序列化表单
    ssm框架使用详解&配置两个数据源
    nginx在一个服务器上配置两个项目,并通过两个不同的域名访问
    nginx跨域设置&文件上传大小限制
    Navicat11连接oracle数据库
  • 原文地址:https://www.cnblogs.com/lst619247/p/9110445.html
Copyright © 2020-2023  润新知