zoukankan      html  css  js  c++  java
  • 闭包

    闭包:

    闭包是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)公用方法

  • 相关阅读:
    JVM(六)——垃圾回收算法
    JVM(五)——执行引擎、String
    JVM(四)——方法区
    JVM(三)——堆
    JVM(二)——虚拟机栈
    JVM(一)——概述和类加载子系统
    Java EE入门(二十二)——Linux和Nginx
    操作系统(六)——磁盘和IO
    【03】RNN
    【02】时间复杂度
  • 原文地址:https://www.cnblogs.com/luoyeluoy/p/6064039.html
Copyright © 2011-2022 走看看