• 闭包


    闭包:

    闭包是JavaScript中的一个概念,今天在看前端面试题,看到了闭包,一直不得甚解,今天决心弄懂它。

    JavaScript在函数内部可以读取全局变量,如下所示

    var n=999;
      function f1(){
        alert(n);
      }
      f1(); 
    
    输出999
    

    在函数外部不能读取函数内部的局部变量

    function f1(){
        var n=999;
      }
      alert(n); 
    
    输出: Uncaught ReferenceError: n is not defined(…)

    如果我们要取到函数内部的局部变量时的话要利用第一条特性:

     function f1(){
        n=999;
        function f2(){
          alert(n); // 999
        }
      }
    

    在函数f1中在定义一个函数f2 调用f2输出函数f1的值

    《JavaScript权威指南》中提到“JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里

    在C#中变量的作用域是块级的 即两个{}之间,而在JavaScript中,变量的作用域是限定在函数里的

    javaScript中输出是8
    function
    aa(){ if(true){ var a= 8; } alert(a); } aa();

    输出是8;

    C#中则不能通过编译
    public string aa(){ if(true){ var a= 8; } return a } aa();

      

    我们可以这样理解 父函数f1是一个对象,n是其(private)私有属性,函数f2(闭包)则是其(public)公用方法

  • 相关阅读:
    java实现机器人行走
    java实现机器人行走
    java实现机器人行走
    java实现机器人行走
    java实现机器人行走
    java实现购物券消费方案
    java实现购物券消费方案
    java实现购物券消费方案
    java实现购物券消费方案
    《技术垄断:文明向技术投降》
  • 原文地址:https://www.cnblogs.com/luoyeluoy/p/6064039.html
Copyright © 2020-2023  润新知