• JavaScript基础理解闭包问题


    s首先来看一个例子,

    <!DOCTYPE html> 

    <html>

    <head>

    <title>test</title>

    <script language="javascript">   

    function f1(){

        n=999;

        function f2(){
           alert(n); // 999     
          }    
        return f2;   
        }      
    var result=f1();   
    result();
    </script>

    </head>

    <body> </body>

    </html>

     从上面的例子可以理解,如果是直接f1()是访问不到alert的,只有在返回给变量的时候,才会把f1中的f2作为返回值输出f2中的alert。

    直白的理解,闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

    那么闭包都有啥子作用呢?

    1、读取函数内部的变量

    2、让这些变量的值始终保存在内存之中

    <!DOCTYPE html>
    <html>
    <head>
    <title>test</title>
    <script language="javascript">
      function f1(){

        n=999;
    n_add=function(){n++;}
        function f2(){
          alert(n); // 999
        }
    return f2;
      }
    var result=f1();
    result();
    n_add();
    result();//1000
    n_add();
    result();//1001

    //不定义var的时候是全局变量
    //定义var的时候是局部变量
    //所以n和n_add都是全局的,但此处访问不到f2

    </script>

    </head>
    <body>
    </body>
    </html>

    上面的例子可以很方便的理解闭包值用来保存变量的值的作用

    http://www.jb51.net/article/24101.htm###

  • 相关阅读:
    iostableview
    asio教程 Mac
    docker教程
    cpp0602
    在内网中使用leaflet和leafletgeoman
    买车流程
    Es的分布式架构原理(es是如何实现分布式的)
    Java虚拟机:内存区域与内存模型、垃圾收集、类文件结构及类加载机制、线程与锁优化、jdk命令行与可视化工具
    Verdi笔记(E课网教程)
    Django框架15 /Python使用license设置项目有效期
  • 原文地址:https://www.cnblogs.com/yingzi/p/2369260.html
Copyright © 2020-2023  润新知