闭包私有化

It’s a tree falling in the forest with no one around to hear it.     ——《你不知道的Javascript(上卷)》

JavaScript中是没有块级作用域的,为了在JavaScript中引入块级作用域,可以使用匿名函数模拟块级作用域。为什么大费周折整出块级作用域呢?因为有了块级作用域,每个开发人员都可以在块级作用域中定义自己的变量,而不用担心会搞乱全局作用域,过多的全局作用域变量核函数会导致命名冲突。匿名函数用作块级作用域被称为私有作用域(private scope),这个匿名函数实际上就是一个闭包,它可以访问自己内部活动对象,函数执行完成即销毁,不占用内存,语法如下:

(function () {
//块级作用域
})();

上述代码首先将函数声明包含在圆括号中,这表示这段代码实际上是一个函数表达式,紧随其后的圆括号会立即调用这个函数。
以下实例表明,私有作用域的变量不可由外部访问

下面用一实例进行测试

function Person(name,sex){//私有化变量var otherName = "Json";this.name = name;this.sex = sex;this.change = function(){this.name = otherName;}this.changeName = function(target){otherName = target;}this.sayName = function(){console.log(otherName);}}

运行结果:


for循环示例:

for (var i=1; i<=5; i++) {
setTimeout( function timer() {
console.log( i );
}, i*1000 );
}
for (var i=1; i<=5; i++) {
(function() {
var j = i;
setTimeout( function timer() {
console.log( j );
}, j*1000 );
})();
}

相信了解闭包之后这两个的运行结果应该很简单的就能看出来:

第一个结果:

6

6

6

6

6

第二个结果:

1

2

3

4

5

Mr.J--JS学习(闭包私有化)相关推荐

  1. 你不懂的JS学习笔记(作用域和闭包)

    You don't KnowJS 引语:你不懂的JS这本书github上已经有了7w的star最近也是张野大大给我推荐了一波,阅读过之后感觉对js的基础又有了更好的理解.本来我是从来不这种读书笔记的, ...

  2. js学习笔记(执行上下文、闭包、this部分)

    1.函数的准备工作 函数在执行会进行一些准备工作,如创建一个"执行上下文"环境:执行上下文可以理解为当前代码的执行环境,它会形成一个作用域: 每个碰到可执行代码的时候都会进行这些& ...

  3. sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)

    sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之 ...

  4. 用闭包实现重载的过程学习闭包

    用闭包实现重载的过程学习闭包 let global = {overLoad:function(){} }; function Refactoring(func) {let oldFunc = glob ...

  5. 利用js的闭包原理做对象封装及调用方法

    创建一个js文件,名为testClosure.js: ? 1 2 3 4 5 6 7 8 9 (function () {   function a()   {     alert('i am a') ...

  6. javascript从入门到跑路-----小文的js学习笔记目录

    ** javascript从入门到跑路-----小文的js学习笔记(1)---------script.alert.document.write() 和 console.log 标签 javascri ...

  7. JS学习笔记(九)深拷贝浅拷贝【Array、Object为例】

    JS学习笔记(九) 本系列更多文章,可以查看专栏 JS学习笔记 文章目录 JS学习笔记(九) 一.赋值&复制 二.浅拷贝(shallow copy) 1. 什么是浅拷贝 2. 数组的浅拷贝 ( ...

  8. Jquery真的不难~第八回 JS的闭包问题

    百度百科中对闭包的定义: 闭包是可以包含自由(未绑定到特定对象)变量的代码块:这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义."闭包" 一词来源 ...

  9. ArcGIS JS 学习笔记4 实现地图联动

    原文:ArcGIS JS 学习笔记4 实现地图联动 1.开篇 守望屁股实在太好玩了,所以最近有点懒,这次就先写个简单的来凑一下数.这次我的模仿目标是天地图的地图联动. 天地的地图联动不仅地图有联动,而 ...

最新文章

  1. 杂谈:选择游戏还是应用?
  2. Spring学习的切入点
  3. javabeans_(单元测试)JavaBeans的技巧
  4. _attribute_((packed))
  5. ppap文件过程流程图制作_收藏 | 据说PPAP的精华都在这个PPT里!一起来鉴定下
  6. vs2008试用期到期解决办法
  7. python 任务计划程序_10.Selenium+Python+任务计划程序实现定时发送邮件
  8. html5隐藏自定义控制按钮,用仿ActionScript的语法来编写html5——第七篇,自定义按钮...
  9. 计算机怎么连接佳能打印机驱动,佳能打印机怎么连接电脑
  10. UniWebView使用总结
  11. selenium满屏操作(浏览器最大化)
  12. linux编程闹钟小程序,如何做一个番茄闹钟小程序
  13. 有意思的互联网创业公司(Timehop/Redbeacon )
  14. 香港服务器部署网站慢,用香港云主机服务器网站慢怎么解决?
  15. L1-030. 一帮一-PAT团体程序设计天梯赛GPLT
  16. 介绍DOTA2 AI的开发基础——调试
  17. Java IDEA的使用
  18. 微信云开发-后端-快速上手
  19. color demura原理_一种消除液晶屏高温MURA的工艺研究
  20. SDOI 2009 学校食堂

热门文章

  1. 【CV竞赛】百度车道线检测,正在报名中,8.9万元奖金
  2. 创新!谷歌大改Transformer注意力
  3. 收藏 | 万字长文带你理解Pytorch官方Faster RCNN代码
  4. source insight 4.0 无法同步文件问题
  5. 图像学习-HOG特征
  6. 机器学习(十)Mean Shift 聚类算法
  7. InVEST model中生境质量
  8. 服务器系统2008能升级2012吗,将 Windows Server 2008 R2 升级到 Windows Server 2012 R2
  9. 小程序和android联调,小程序打开APP指定页面
  10. php 10分钟过期,如何在30分钟后过期PHP会话?