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

    简单的闭包函数

  • 相关阅读:
    【C#】3.算法温故而知新
    【C#】2.算法温故而知新
    【C#】1.算法温故而知新
    【C#】SQL数据库助手类2.0(自用)
    【Javascript Demo】JS获取当前对象大小以及屏幕分辨率等
    【Android 基础】Android中全屏或者取消标题栏
    【ASP.NET 问题】System.InvalidOperationException: 对象的当前状态使该操作无效 【大量表单数据提交】错误解决
    【CSS】颜色码对照表
    【Ext.Net学习笔记】07:后续
    【Ext.Net学习笔记】06:Ext.Net GridPanel的用法(GridPanel 折叠/展开行、GridPanel Selection、 可编辑的GridPanel)
  • 原文地址:https://www.cnblogs.com/lst619247/p/9110445.html
Copyright © 2011-2022 走看看