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在函数内部,并使用嵌套函数,就解决了计数器困境;
这是闭包的基本例子; 闭包使得函数拥有私有变量变成可能;
javascript闭包简单实例相关推荐
- Javascript闭包简单理解
Javascript闭包简单理解 原文:Javascript闭包简单理解 提到闭包,想必大家都早有耳闻,下面说下我的简单理解. 说实话平时工作中实际手动写闭包的场景并不多,但是项目中用到的第三方框架和 ...
- JavaScript闭包简单应用
闭包定义 在JavaScript中,当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包.简单说,闭包就是能够读取其他函数内部变量的函数. 闭包的作用: 1. 可以读取函数内部的变量 2. 让 ...
- JavaScript闭包原理与用法实例
###1.与闭包有关的两个概念: (1)变量的作用域 不带有关键字var的变量会成为全局变量: 在函数中使用关键字var声明的变量是局部变量. 局部变量只有在函数内部才能访问到,在函数外面是访问不到的 ...
- JavaScript 闭包的详细分享(三种创建方式)(附小实例)
JavaScript闭包的详细理解 一.原理:闭包函数--指有权访问私有函数里面的变量和对象还有方法等:通俗的讲就是突破私有函数的作用域,让函数外面能够使用函数里面的变量及方法. 1.第一种创建方式 ...
- Javascript闭包和闭包的几种写法及用途
好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,主要将闭包的写法.用法和用途. 一.什么 ...
- 全面理解Javascript闭包和闭包的几种写法及用途【转】
一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...
- 全面理解Javascript闭包和闭包的几种写法及用途
一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...
- JavaScript闭包如何工作?
您将如何向了解其闭包概念(例如函数,变量等)的人解释JavaScript闭包,但却不了解闭包本身? 我已经在Wikipedia上看到了Scheme示例 ,但是不幸的是它没有帮助. #1楼 我知道已经有 ...
- 全面理解Javascript闭包和闭包的几种写法及用途--转载自https://www.cnblogs.com/yunfeifei/p/4019504.html...
全面理解Javascript闭包和闭包的几种写法及用途 好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一 ...
最新文章
- Excel百万数据导入oracle,excel表数据导入oracle的方法!(超级有用)
- 面试常备题---链表总结篇
- 后盾网lavarel视频项目---自定义验证和自定义验证规则
- 【UVA】10012 - How Big Is It?(暴力)
- 算法提高课-图论-负环-AcWing 1165. 单词环:spfa判正环、二分、01分数规划
- Spring AOP根据JdbcTemplate方法名动态设置数据源
- 491. Increasing Subsequences 递增子序列
- 【转载】Kubernetes 加入Docker 平台,Mac和Windows开发者的福音
- redis 缓存预热_Redis异常问题解决方案:缓存雪崩、预热、穿透、击穿、降解方案分析...
- Spring-tx-TransactionInterceptor类
- 商业医疗险住院报销需要什么材料?
- 手把手教你用jmeter做压力测试(详图)
- 碰到 oracle 10g ORA-00257
- html有哪些段落及排版标记,04.HTML排版标记
- Android平台介绍
- matlab 图像处理 histogram shifting 基于直方图平移的信息隐藏
- 【内网渗透】域横向PTHPTKPTT哈希票据传递
- 卫士处刑者冠军css3边,流放之路3.6强势BD排名_3.6版本之子介绍_3DM网游
- Log4j2远程命令执行2-vulfocus-wp
- freeswitch阿里云安装配置文档
热门文章
- Android服务部分总结
- labview叠加白噪声_强化学习中Ornstein-Uhlenbeck噪声是鸡肋吗?
- vue中引入jquery
- Python-技术篇-使用logging模块打印详细报错日志,获取报错信息位置行数方法
- 【HDU2683 TCE-frep number system 完全数+二项展开式】
- hdu-3944 DP?
- poj 2392 dp 不是很懂哎!!!Space Elevator
- [YTU]_2738 指针练习--变量交换
- medianBlur函数
- 多个Series合并成Dataframe,index不完全匹配怎么处理