JavaScript之闭包

       先来说说闭包的概念:由于在JavaScript中,函数是对象,对象是属性的集合,而属性的值又可以是对象,则在函数内定义函数成为理所当然,如果在函数func内部声明函数inner,然后在函数外部调用inner,这个过程即产生了一个闭包。

     1、闭包的特性

var outter = [];
function test(){
var array = ["one","two","three","four"];
for(var i = 0;i<array.length;i++){
var  x = {};
      x.no = i;
      x.text = array[i];
      x.invoke = function(no){
     return function(){
      print(no);
     }
   }(i);
outter.push(x);
  }
}
test();

    闭包允许你引用在于外部函数中的变量,然而,他并不是使用该变量创建时的值,相反,他会使用外部函数中该变量最后的值。

    2、闭包的用途:匿名函数自执行函数

var test1 = {
     table : [],
     tree : {}
};
(function(dm){
   for(var i = 0;i<dm.table.rows;i++){
       var row = dm.table.rows[i];
       for(var j= 0;j<row.cells;i++){
           drawCell(i,j);
         }
     }
})(test1);

 创建了一个匿名函数。并立即执行它,由于外部无法引用他内部的变量,因此在执行完成后很快会被释放,最主要是这种机制不会污染全局对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值