javascript闭包简单实例

1 闭包实例

下图是一个闭包实例;

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> 闭包Demo </title>
</head>
<body>

<p>闭包Demo。</p>
	
<script>
function a(){
  var n = 0;
  this.inc = function () {
    n++; 
    console.log(n);
  };
}
var c = new a();
c.inc();  //控制台输出1
c.inc();  //控制台输出2
</script>

</body>
</html>

    每次运行在控制台输出1和2;

    有权访问另一个函数作用域内变量的函数都是闭包。这里 inc 函数访问了构造函数 a 里面的变量 n,所以形成了一个闭包。

    如果没学过闭包不太好理解;下面来看一下闭包原理;

2 计数器困境

    闭包是由 计数器困境 而提出的语法;先理解这个就可以理解闭包;

    在js中,下面代码实现了counter每次加1,但是counter的值也可能被其他代码改变;因为此时counter是全局变量;

    如下,把counter定义在函数内部,其他代码不能改变counter,但是counter不能每次加1; 

这就是 计数器困境;

3 javascript闭包

在 JavaScript 中,所有函数都能访问它们上一层的作用域。

JavaScript 支持嵌套函数。嵌套函数可以访问上一层的函数变量。

    如下,定义counter在函数内部,并使用嵌套函数,就解决了计数器困境; 

    这是闭包的基本例子;  闭包使得函数拥有私有变量变成可能;

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值