码迷,mamicode.com
首页 > 其他好文 > 详细

匿名函数和闭包

时间:2015-04-10 22:07:29      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

       在学习JavaScript中有一个匿名函数,它像函数但是又和经常遇到的函数不大一样。

匿名函数就是你不知道它的名字,

普通函数和匿名函数对比

普通函数:

function box(){
var name='普通函数';
}
alert(box());

匿名函数:

<pre name="code" class="javascript"> function(){
alert('匿名函数');
}();


调用匿名函数:

想要调用匿名函数也很简单,在匿名函数函数后面加一个括号就可以,这种调用叫自执行调用。

 function(){
alert('执行匿名函数');
}();

匿名函数和闭包:

所谓的闭包函数可以理解为可以访问一个函数的变量的函数。它是一种方法嵌套,这么做可以大大减少代码量,使代码看上去清晰。

举例:比如我想要得到小于5的数。

解决方法:

<span style="font-size:14px;">//使用匿名函数解决循环取值问题
function box() {
    var arr = [];//定义一个数组
    for (i = 0; i < 5; i++) { //循环(条件)
        arr[i]=function(){  //数组等于匿名函数,这里就是加了一个匿名函数来执行循环
            return i;   //
        }
    }
    return arr;//返回数组
}
var b = box();
for (i = 0; i < 5; i++) {
    alert(b[i]());
}</span>

闭包函数:

function box() {   //这个函数在前后都没有影响,因为他是被调用的。
    var arr = [];//数组
    for (var i = 0; i < 5; i++) {
        arr[i] = function (num) {
            //num is here
            return function () {//使用闭包,将匿名函数中的变量储存到内存中去
                return num;
            }
        }(i);//这里可以去掉括号,执行自执行。因为将值赋给了一个变量
    }
    return arr;

}

var b = box();
for (i = 0; i < 5; i++) {
    alert(b[i]());
}
闭包函数有一个特性就是将返回结果储存到内存中,



匿名函数和闭包

标签:

原文地址:http://blog.csdn.net/mayfla/article/details/44310505

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