zoukankan      html  css  js  c++  java
  • 闭包的简单应用

    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();

    简单的闭包函数

  • 相关阅读:
    performance benchmark : memcached vs Kyoto Tycoon
    Adhesive框架系列文章应用程序信息中心模块实现
    神奇的Redis
    使用代码测试ASP.NET MVC2执行流程
    linq2sql代码大全
    7/17博客园活动浅谈网站架构中缓存的应用所有资料
    浅谈.NET下的多线程和并行计算(十四)并行计算前言
    公司.NET 3.5培训资料分享
    mongodb分片集群(sharding with replica set)配置
    mongodb有关的研究
  • 原文地址:https://www.cnblogs.com/lst619247/p/9110445.html
Copyright © 2011-2022 走看看