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
分享到:
相关推荐
以上是JavaScript学习笔记中提到的一些核心知识点,通过对这些知识点的理解和熟练应用,可以为进一步学习和掌握JavaScript打下坚实的基础。在实际开发过程中,结合具体的项目需求,这些知识会得到更深入的拓展和应用...
- **DOM (Document Object Model)**: 描述了文档对象模型的接口,允许程序和脚本动态地访问和更新文档的内容、结构和样式。 - **BOM (Browser Object Model)**: 提供了一组与浏览器交互的对象,如window、navigator...
3. **DOM操作**:文档对象模型(DOM)是JavaScript操作HTML和XML文档的标准接口。学习者将了解到如何通过JavaScript选择、添加、修改和删除DOM元素,以及事件处理机制。 4. **AJAX与异步编程**:AJAX(异步...
本学习笔记专为初学者设计,旨在帮助新接触JavaScript的人快速掌握这门语言的核心概念和实用技巧。 首先,"JavaScript特效.chm"可能是一份关于JavaScript实现的各种网页特效的教程。这些特效可能包括图片轮播、下拉...
### JavaScript核心笔记精要 #### 一、定义变量与类型转换 **1.1 定义变量的方法** 在JavaScript中,定义变量有两种方法:显示定义和隐式定义。 - **显示定义**: 使用`var`关键字定义变量。这种方法直到变量首次...
### JavaScript权威指南学习笔记二:客户端JavaScript #### 第十二章:Web浏览器中的JavaScript ##### 一、Web浏览器环境 在客户端JavaScript中,浏览器提供了一个特定的执行环境,其中`window`对象扮演着至关...
JavaScript可以用来动态地修改文档对象模型(DOM),从而改变网页的内容或布局。 **示例6:** ```html ('Down!')">Click ('Click!')">Click ``` - **解释:** 第一个链接在鼠标按下的时候会在页面上输出`Down!`;第二...
最后,`GridPanel`对象被创建,指定了渲染目标、数据源、列模型、选择模型等属性。 ### 总结 Extjs的Tab Panel和Grid组件提供了丰富的特性和自定义选项,使得开发者能够构建出既美观又功能强大的用户界面。通过...
- JavaScript可以操作DOM(文档对象模型),实现对网页元素的增删改查,如`getElementById`、`appendChild`等。 以上就是JavaScript学习笔记中的主要知识点,理解和掌握这些内容对于深入学习JavaScript至关重要。...
【狂神说系列 JavaScript笔记】是一份全面且深入的JavaScript学习资源,旨在帮助开发者和初学者深入理解这门广泛应用于Web开发的脚本语言。这份笔记涵盖了JavaScript的基础语法、核心概念以及高级特性,旨在构建一个...
### JavaScript DOM 编程艺术读书笔记关键知识点解析 #### 一、JavaScript简史与相关技术简介 - **XHTML(可扩展的超文本标记语言)**:这是一种更加严格、更加强大的HTML版本,旨在提高网页的可读性和可扩展性。 ...
3. **DOM(Document Object Model)**:文档对象模型,允许JavaScript操作HTML文档结构。 #### 四、基本语法 ##### 1. HTML与JavaScript的结合方式 - **内部JS**:通过`<script>`标签直接在HTML文件中嵌入...
【压缩包子文件的文件名称列表】: "第三阶段笔记" 没有给出具体的文件详细信息,但可以推测这可能包含一系列按主题或模块划分的笔记文档,如HTML、CSS、JavaScript的基础知识,数据库管理,面向对象设计原则,类和...
DOM(文档对象模型)是JavaScript操作网页内容的主要接口。学会选择元素(如getElementById、querySelector、querySelectorAll等)、修改元素属性、插入和删除节点,是进行网页动态更新的基础。 异步编程是...
JavaScript基础知识点 JavaScript是一种脚本语言...本笔记涵盖了JavaScript的基础知识点,包括变量、数据类型、流程控制语句、函数、数组、对象、JSON、BOM和Location等概念,为学习JavaScript提供了一个良好的基础。
4. **MVC(Model-View-Controller)**:这是一种常见的软件设计模式,常用于JavaWeb开发,用于分离业务逻辑、数据模型和用户界面。 5. **JDBC(Java Database Connectivity)**:用于连接数据库的Java API,包括...
在开发过程中,笔记可能记录了如何将这些机器学习模型与前端Bootstrap界面整合,比如创建图表来展示模型的预测结果,或者利用Bootstrap的表单组件来输入和处理数据。这涉及到前后端交互,可能使用了Ajax异步请求,...
总的来说,这份笔记将引导学习者了解Bootstrap的基础知识,包括栅格系统、组件使用、样式定制和JavaScript插件的应用。通过学习和实践,无论是新手还是有经验的开发者,都能快速上手并提升网页开发效率。
在Web开发中,JavaScript常用于操作文档对象模型(DOM),通过DOM可以改变HTML元素的样式、内容或位置。熟悉DOM API,如getElementById、appendChild等,是前端开发的基本技能。 四、事件处理 JavaScript通过事件...
**文档对象模型(Document Object Model, DOM)**是HTML或XML文档的标准模型,它提供了对文档结构的访问和修改的方式。 1. **DOM树的概念**: - HTML文档被解析成一个节点树,每个节点代表文档中的一个元素。 - ...