JavaScript中的闭包Closures
示例:
//Passed in FF2.0, IE7, Opera9.25, Safari3.0.4
function outer(){
var a="aaa";
var b="bbb";
return function(){ return a + " " + b; };
}
var inner=outer();
document.write(inner());
outer返回的是一个内嵌函数,内嵌函数使用了outer的局部变量a和b。照理outer的局部变量在返回时就超出了作用域因此inner()调用无法使用才对。这就是闭包Closure,即函数调用返回了一个内嵌函数,而内嵌函数引用了外部函数的局部变量、参数等这些应当被关闭(Close)了的资源。
根据前面Scope Chain的理解可以解释,返回的内嵌函数已经持有了构造它时的Scope Chain,虽然outer返回导致这些对象超出了作用域、生存期范围,但JavaScript使用自动垃圾回收来释放对象内存: 按照规则定期检查,对象没有任何引用才被释放。因此上面的代码能够正确运行。
关于使用Closure时的内存泄漏、效率等问题,参考http://www.jibbering.com/faq/faq_notes/closures.html
分享到:
相关推荐
JS的核心笔记,写给想打好JS基础的你!
|--4.slice()方法--截取元素。根据给定的范围可从已有的数组中返回选定的元素 14.Function:js中一切都是对象,连方法都是1个对象!! 笔试题:js中方法定义集中方式: A:function compare(a,b){return a-b;}--...
知识点比较全面的javascript备忘笔记,特点有: 1、知识点全面,相应案例全 2、Javascript面向对象方面做了大量的研究 3、对内置对象的知识很...4、DOM模型的控制事例很多 5、Cookie技术和Ajax技术 6、收集常用的js代码
1. 能够使用CSS的基本选择器选择元素 ...3. 能够说出盒子模型的属性 4. 能够说出JS中五种数据类型 5. 能够使用JS中常用的运算符 6. 能够使用JS中的流程控制语句 7. 能够在JS中定义命名函数和匿名函数
front-end-notes前端学习笔记CSS 盒模型DOM 事件HTTP 协议原型链面向对象通信安全算法浏览器页面相关JS 运行机制页面性能错误监控业务能力职业竞争力md-3:前端 JavaScript 知识总结目标ES6原型异步虚拟 DOMMVVM 和 ...
问题域、对象文字、文档对象模型 域建模、表、函数、方法和对象 HTML 链接和 CSS 布局 表单、列表、表格、表单和事件 调试 图像、音频和视频 图表和画布元素 本地存储 变换、过渡和动画 谷歌从建立完美团队的努力...
JavaScript学习笔记 W3C文档对象模型node部分查询:http://www.w3schools.com/dom/dom_node.asp
JavaScript是一种描述性语言 也是一种基于对象(object)和事件驱动(Event Driven)的 并具有安全性能的脚本语言 JavaScript应用程序多要下载到浏览器的客户端执行从而减轻服务器负担 JavaScript主要用来在HTML...
DOM文档对象模型是HTML和XML的应用程序接口(API),DOM将整个页面规划成由节点层次构成的文档。DOM对象给予开发者对HTML的访问权限,并且使开发者能将HTML作为XML文档来处理和查看。DOM对象是与语言无关的API,意味...
Javascript 输入网址 JS文件客户端保存 浏览器引擎执行Js 通过交互响应返回 Firefox插件->Filebug ->fetwork ECMAscript核心、DOM文档对象模型、BOM浏览器对象类型 ECMaScript Javascript是面向对象
这个标准基于 JavaScript... 本系列教程旨在向大家分享本人当年学习Javascript的笔记和心得。本系列教程预计分五个部分。 第一部分:Javascript内置对象。 第二部分:浏览器对象。 第三部分:文档对象模型。 第四部分:
4、1997年 网景 将Javascript 1.1 提供给了ECMA(欧洲计算机制造商联合会),ECMA 获取了 JS 的核心,称之为 ECMA Script (ES) 完整的JS组成: 1、核心(ES) 2、文档对象模型(Document Object Model) - DOM 允许让 ...
以上是人工智能_大模型028_大语言模型开发框架_Semantic Kernel详细介绍_框架安装_Semantic Functions脚本编写---人工智能工作笔记0163 这个博文中的案例文件,是包括了,如何使用Semantic Function进行,利用自然语言,...
因为Javascript的Object模型很独特,和其他语言都不一样,初学者不容易掌握。 下面就是我的学习笔记,希望对大家学习这个部分有所帮助。我主要参考了以下两本书籍: 《面向对象的Javascript》(Object-Oriented ...
4、JavaScript提升 5、JavaScript进阶与轮播和飞机大战坦克 6、JQuery基础 7、JQuery提升 8、H5C3基础 第三章 Django 1、Django基本流程走通 2、Django中的模型 3、Django中的视图 4、Django中的模板 5、Django的...
2、文档对象模型(DOM),提供访问和操作网页内容的方法和接口。 3、浏览器对象模型(BOM),提供与浏览器交互的方法和接口。 第二章 script标签 延迟脚本:定义defer属性,表明脚本在执行时不会影响页面的构造,也...
Javascript第4版学习笔记 本书从 JavaScript 的起源开始,逐步讲解到新出现的技术,其中重点介绍 ECMAScript 和 DOM 标准。在 此基础上,接下来的各章揭示了 JavaScript 的基本概念,包括类、期约、迭代器、代理...
一个完整JavaScript由ECMAScript(核心),DOM(文档对象模型),BOM(浏览器对象模型); 文档对象模型(DOM):是针对XML但经过扩展HTML的应用程序编程接口(API,应用程序编程接口)。DOM将整个页面映射为一个多层...
对象模型比起JavaScript好的不是一点两点,clone关键字真是为原型式编程量身打造的,new就显得不伦不类了,尤其是我从Java开始的。恩,废话就少提,下面我学习Ruby的各个部分。其中Ruby风格这一部分是开放的,因为我...
2013笔记轻松搞定网页设计html+css+javascript 内容介绍 该教程用循序渐进的手法和项目驱动的案例,由浅入深的讲解网页设计的...4、javascript深入讲解(js基本语法、数组、js面向对象编程,js系统函数、事件、js dom