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闭包简单实例相关推荐

  1. Javascript闭包简单理解

    Javascript闭包简单理解 原文:Javascript闭包简单理解 提到闭包,想必大家都早有耳闻,下面说下我的简单理解. 说实话平时工作中实际手动写闭包的场景并不多,但是项目中用到的第三方框架和 ...

  2. JavaScript闭包简单应用

    闭包定义 在JavaScript中,当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包.简单说,闭包就是能够读取其他函数内部变量的函数. 闭包的作用: 1. 可以读取函数内部的变量 2. 让 ...

  3. JavaScript闭包原理与用法实例

    ###1.与闭包有关的两个概念: (1)变量的作用域 不带有关键字var的变量会成为全局变量: 在函数中使用关键字var声明的变量是局部变量. 局部变量只有在函数内部才能访问到,在函数外面是访问不到的 ...

  4. JavaScript 闭包的详细分享(三种创建方式)(附小实例)

    JavaScript闭包的详细理解 一.原理:闭包函数--指有权访问私有函数里面的变量和对象还有方法等:通俗的讲就是突破私有函数的作用域,让函数外面能够使用函数里面的变量及方法. 1.第一种创建方式 ...

  5. Javascript闭包和闭包的几种写法及用途

    好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,主要将闭包的写法.用法和用途.  一.什么 ...

  6. 全面理解Javascript闭包和闭包的几种写法及用途【转】

    一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...

  7. 全面理解Javascript闭包和闭包的几种写法及用途

     一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...

  8. JavaScript闭包如何工作?

    您将如何向了解其闭包概念(例如函数,变量等)的人解释JavaScript闭包,但却不了解闭包本身? 我已经在Wikipedia上看到了Scheme示例 ,但是不幸的是它没有帮助. #1楼 我知道已经有 ...

  9. 全面理解Javascript闭包和闭包的几种写法及用途--转载自https://www.cnblogs.com/yunfeifei/p/4019504.html...

    全面理解Javascript闭包和闭包的几种写法及用途 好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一 ...

最新文章

  1. Excel百万数据导入oracle,excel表数据导入oracle的方法!(超级有用)
  2. 面试常备题---链表总结篇
  3. 后盾网lavarel视频项目---自定义验证和自定义验证规则
  4. 【UVA】10012 - How Big Is It?(暴力)
  5. 算法提高课-图论-负环-AcWing 1165. 单词环:spfa判正环、二分、01分数规划
  6. Spring AOP根据JdbcTemplate方法名动态设置数据源
  7. 491. Increasing Subsequences 递增子序列
  8. 【转载】Kubernetes 加入Docker 平台,Mac和Windows开发者的福音
  9. redis 缓存预热_Redis异常问题解决方案:缓存雪崩、预热、穿透、击穿、降解方案分析...
  10. Spring-tx-TransactionInterceptor类
  11. 商业医疗险住院报销需要什么材料?
  12. 手把手教你用jmeter做压力测试(详图)
  13. 碰到 oracle 10g ORA-00257
  14. html有哪些段落及排版标记,04.HTML排版标记
  15. Android平台介绍
  16. matlab 图像处理 histogram shifting 基于直方图平移的信息隐藏
  17. 【内网渗透】域横向PTHPTKPTT哈希票据传递
  18. 卫士处刑者冠军css3边,流放之路3.6强势BD排名_3.6版本之子介绍_3DM网游
  19. Log4j2远程命令执行2-vulfocus-wp
  20. freeswitch阿里云安装配置文档

热门文章

  1. Android服务部分总结
  2. labview叠加白噪声_强化学习中Ornstein-Uhlenbeck噪声是鸡肋吗?
  3. vue中引入jquery
  4. Python-技术篇-使用logging模块打印详细报错日志,获取报错信息位置行数方法
  5. 【HDU2683 TCE-frep number system 完全数+二项展开式】
  6. hdu-3944 DP?
  7. poj 2392 dp 不是很懂哎!!!Space Elevator
  8. [YTU]_2738 指针练习--变量交换
  9. medianBlur函数
  10. 多个Series合并成Dataframe,index不完全匹配怎么处理