JavaScript闭包

闭包

闭包是什么

JavaScript允许函数嵌套,并且内部和函数可以访问定义在外部函数中的所有变量和函数,以及外部函数能访问的所有变量和函数。单数,外部函数却不能访问定义在内部函数中的变量和函数。

当内部函数以某种方式被任何一个外部函数作用域访问时,一个闭包就产生了。

闭包就是词法表示包括不必计算的变量的函数,也就是说,该函数能使用函数外定义的变量。

// 对象与函数
function fn1(){
  var v = 100;//局部变量
  return {
    get : function(){
      return v;
    },
    set : function(value){
      v = value;
    }
  }
}
var obj = fn1();
obj.set(200);
console.log(obj.get());

// 函数与构造函数
function fn2(){
  var v = 100;
  this.get = function(){
    return v;
  }
  this.set = function(value){
    v = value;
  }
}
var obj = new fn2();
obj.set(200);
console.log(obj.get());//200

//var n;//全局作用域
var get,set;
function fn3(){
  var v = 100;//局部变量
  // 
  get = function(){
    return v;
  }
  set = function(value){
    v = value;
  }
}
fn3();
set(200);
//console.log(n());//100
function fn1(v){
  var v1 = 100;
  // consloe.log(v2);
  // return v();
  v(v1);
}

function fn2(v){
  var v2 = 200;
  console.log(v);
}

fn1(fn2);
// fn2();

闭包的特点与作用

闭包的特点:

  • 局部变量:在函数中定义有共享意义(如:缓存,计算器等)的局部变量。(注:定义成全局变量会对外造成污染)
  • 内部函数:在函数(f)中声明内嵌函数,内嵌函数(g)对函数(f)中的局部函数变量进行访问。
  • 外部使用:函数(f)向外返回此内嵌函数(g),外部可以通过此内嵌函数持有并访问声明在函数(f)中的局部变量,而此变量在外部是通过其他途径无法访问的。

闭包的作用:

  • 提供可共享用的局部变量
  • 保护共享的局部变量。提供专门的读写变量的函数。
  • 避免全局污染。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值