zoukankan      html  css  js  c++  java
  • JavaScript 闭包

        闭包是对作用域范围的扩展,闭包让函数可以在外部访问该函数被创建的作用域内的变量。

        一般来说,一个函数的内部变量是无法在外部获取到的,但是我们可以在这个函数内创建一个内部函数来获取这个外部函数内的局部变量。另外闭包对变量的引用是内存地址的引用。因此闭包主要有两大用处:一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
        闭包同样也适用于循环中的函数,函数能够看到变量值的变化,即使在函数定义以后。因此循环中的每个函数都将引用变量中存储的最后一个值。
    // 每一次循环执行方法都会引用
    // 变量i中存储的最后一个值(5)
    // 这与我们想的不同,原因是,函数被延迟执行,而变量i的值已经改变了
    for ( var i = 0; i < 5; i++ ) {
      setTimeout(function() {
        alert( i );
      }, i * 100 );
    }
        闭包也可以解决this关键字作用域的问题。
    // 使用闭包同时访问内部和外部的对象实例
    var outerObj = {
      myName: "outer",
      outerFunction: function() {
        var self = this;
        var innerObj = {
          myName: "inner",
          innerFunction: function() {
            console.log( self.myName, this.myName ); // "outer inner"
          }
        };
        innerObj.innerFunction();
        console.log( this.myName ); // "outer"
      }
    };
    outerObj.outerFunction();
     
  • 相关阅读:
    IDEA常用快捷键和设置
    java反射总结
    IO编程总结
    3月份主要学习
    idea中maven将jar包导入本地maven库
    hive常用命令
    CentOS7 安装图形化桌面
    vue+leaflet
    Springboot + Rabbitmq + WebSocet + vue
    VUE 中引入百度地图(vue-Baidu-Map)
  • 原文地址:https://www.cnblogs.com/liusuqi/p/3261268.html
Copyright © 2011-2022 走看看