微信小程序学习--基础--JavaScript 闭包

首先得明确两点,关于JavaScript:

  • 局部变量不能在外部(公共区域)被读取
  • 函数内部可以直接读取全局变量(这点与 Java 等语言不同)
function f1(){
    var n=999;
}
alert(n); // error

但有时候我们需要在外部读取局部变量,可以这样来做

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

利用局部变量可以读取他上层的变量的特性,这里 f2 函数内是可以读取到 n 的数值。那么,我们将 f2 作为返回值,就能得到 n 了,于是代码可以这样写

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

这里的 f2 函数就是闭包,闭包可以理解为能够读取其他函数内部的函数,因为只有函数内部的子函数才能读取函数的变量,所以闭包可以简单理解为函数内部的函数。相当于连接两个函数之间的桥梁。

除了能读取局部变量的值,还能把这个值始终保存在内存中。解释一下,因为 f2 被作为返回值始终被赋值给一个全局变量,而 f1 是 f2 的父函数,所以 f1 也始终保存在内存中。

猜你喜欢

转载自blog.csdn.net/zhuyuchen321/article/details/80517577
今日推荐