首页 > 编程语言 > 详细

javascript闭包理解

时间:2019-07-04 09:08:45      阅读:77      评论:0      收藏:0      [点我收藏+]

1.关于理解闭包之前,理解j s的链式作用域:

  子对象会向上寻找所有父对象的变量,即父对象的所有变量对子对象可见;但子对象的变量对父对象不可见;

这句话也可以这么理解:

  函数内部可以读取全局变量;函数外部不可以读取函数内部的局部变量;

 

2.需求:现在想让子对象的变量对父对象可见,或者想在函数外部可以读取函数内部的局部变量,则需要其他方法来实现,

因为 只有函数内部的子函数才能读取全局变量;所以需要 :  定义一个函数并将其作为值返回; 这就是闭包的概念;

 

3.概念:所以闭包的可以这样理解:能够读取其他函数内部变量的函数;

举例: 

function f1() {
    var n = 1;
// 闭包
  function f2(){  
    console.log(n);
}  
return f2;
}

var result = f1();
result(); // 1

4. 关于闭包常见作用:

4.1 如上所说的,可以读取其他函数内部的变量;

4.2 让内部变量的值始终存在内存中,不被回收;

 举例:

function f1(){
  var n=1;
nAdd = function(){ //闭包,函数外部对内部进行操作,nAdd是一个全局变量;
  n+=1;  
}  
function f2(){ // 闭包
console.log(n);
}
return f2;
}
var result = f1();
result(); // 1
nAdd(); 
result(); //2

5.使用闭包注意事项:

5.1 因为使用闭包会消耗内存,所以在函数退出前,将不使用的变量删除;

5.2 不要随便更改父函数内部变量值;

 

javascript闭包理解

原文:https://www.cnblogs.com/gushiyoyo/p/11130242.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!