码迷,mamicode.com
首页 > Web开发 > 详细

js闭包的使用例子

时间:2016-08-09 20:24:01      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

网上关于闭包的介绍太多,这就导致了泛滥,对于新手来说,网上好多讲解就说了闭包是啥,还都是用下面这种例子:

     技术分享

我的天啊,我们都看了不知道多少遍了,看完有啥用?在什么场合下用啊?

于是我翻阅各种资料,自己总结了一下:

相信大家在看我这篇文章之前应该看了好多关于闭包的讲解了,其实只要记住一点,闭包就是函数里面有函数,里面的函数可以访问父函数的变量。


 

使用场景如下:

 1 . xhr.addEventListener("load",functionName, false);

      如果functionName需要参数 怎么办呢

     可以再定义一个函数

function functionNameFnc(a){方法一
    return function()   //方法二
{
// 标示 做functionName该做的事情 已经可以用参数了     }
}
xhr.addEventListener("load",functionNameFnc(a), false);

 这段代码里,方法二在方法一里面,方法二还使用了方法一里面的变量,闭包!

2.  

var a = [];for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}

a[6](); // 10

变量i在整个函数内都有效没有得到释放。所以每一次循环,新的i值都会覆盖旧值,导致最后输出的是最后一轮的i的值。

   解决这个问题的方法如下:

for (var i=0;i<10;i++) {
a[i]=(function(i){

return function() {
  console.log(i);
})(i);

}
a[6](); // 6

 这里使用了匿名函数,补充一下,匿名函数最大的用途是创建闭包(这是JavaScript语言的特性之一),匿名函数是立即执行的,执行完就释放,闭包的一个缺陷就是变量一直没有释放,会导致内存泄漏。

这两个例子应该可以让你理解闭包的使用。。。

js闭包的使用例子

标签:

原文地址:http://www.cnblogs.com/yalong/p/5754405.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!