个人理解闭包

闭包的实现和作用域是有关系的

先说作用域 变量可分为全局变量和局部变量

1.函数内部的变量如果没有被var定义就是全局变量

var n=1;

function a(){

alert(n)

}

a();//1

2.函数内部不能改变全部变量的值

function a(){

  var n=1;

}

alert(n)//error

3.现在n表示的是全局变量

function a(){

  n=1;

}

a();

alert(n);//显示n表示的是全局变量

闭包实际的理解就是子函数可以用到父函数中的变量

function f1(){

    var n=999;

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

}

原文地址:https://www.cnblogs.com/GainLoss/p/5995874.html