美文网首页
匿名函数和闭包

匿名函数和闭包

作者: lovelydong | 来源:发表于2017-08-20 18:35 被阅读0次

    匿名函数·

    匿名函数就是没有名字的函数

    实例

    (function(){

    alert("");

    })();

    !(function(){

    alert("");

    }();

    闭包·

    有权访问另一个函数作用域中的变量

    创建闭包的常见方式,就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量

    function box(){

    var age= 100;

    return function(){

    return age;

    };

    }

    alert(box()());

    使用闭包有一个优点,也是它的缺点:就是可以把局部变量驻留在内存中。可以规避使用全局变量。(全局变量污染导致应用程序不可预测性,每个模块都可以调用必将引来灾难,所以推荐使用私有的,封装的局部变量)。

    function box(){·

    var age =100;

    return function(){

    age++;

    return age;

    };

    }

    var b = box();

    alert(b())

    alert(b())

    例子1.

    function box(){

    var myarr = [];

    for(var i = 0;i < 5;i++){

    myarr[i] = function(){

    return i;}

    }

    return myarr;}

    // console.log(box());

    alert(box());---------》[function(){},function(){},function(){},function(){},function(){},function(){},] 匿名函数数组

    var b = box();//数组  //for 已经执行完毕  i = 5

    for(var j = 0;j < b.length;j++){

    alert(b[j]());

    }-------------------》5 5 5 5 5

    例子2.

    function box(){

    var myarr = [];

    for(var i = 0;i < 5;i++){

    // myarr[i] = i;

    // myarr[i] = (function(){

    // return i;

    // })();

    myarr[i] = (function(num){

    return num;

    })(i);

    }

    return myarr;

    }

    alert(box())---------------0 1 2 3 4

    由于闭包里作用域返回的局部变量资源不会被立刻销毁回收,所以可能会占用更多的内存,过渡使用闭包会导致性能下降,建议在非常有必要的时候才使用闭包。·

    使用完之后给它加null,解除引用

    b=null

    相关文章

      网友评论

          本文标题:匿名函数和闭包

          本文链接:https://www.haomeiwen.com/subject/fnofdxtx.html