涅槃沉殇 / 前端关于闭包... / 前端关于闭包和匿名函数

分享

   

前端关于闭包和匿名函数

2018-01-05  涅槃沉殇

1.闭包一直是前端的重要概念。

问题:一个函数每次返回数字叠加,用闭包实现
方案:

function tick()

{

  var a = 1;

  return function(){

       return a++;

  };

}

var c = tick();

alert(c());

alert(c());

alert(c());


函数内部的变量无法被外部获取,但是通过闭包,能返回局部变量。
原理是,函数在创建时会生成一个作用域链,在函数执行时,变量从作用域链中读取。
所以在函数中return 一个函数的话,可以把局部变量存在内存中。


2.匿名函数

匿名函数是在创建时动态生成的函数,而命名函数在任何代码执行前运行,因为他们可能在没有定义前被调用

a.匿名函数

var bird = function (){
alert(“bird”);
}


b.命名函数

function fly(){
alert(1);
}

下面来看个例子:


var arr = [];
  for(var i = 0; i < 3; i++){
    arr[i] = function(){
    console.log(i);
  }
}
arr[0]();
arr[1]();
arr[2]();

返回的是 2  2  2

如果想输出0  1  2


var arr = [];
  for(var i = 0; i < 3; i++){
  (function(k){
    arr[i] = function(){
    console.log(k);
  }
  })(i)
}

函数执行了,传递的变量k,在执行时已经是索引了。




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×

    ¥.00

    微信或支付宝扫码支付:

    开通即同意《个图VIP服务协议》

    全部>>