闭包函数是什么?在开始学习的闭包的时候,大家很能都比较难理解.就从他的官方解释来说,都是比较概念化的.
不过我们也还是从闭包的含义出发.
闭包是指函数有自由独立的变量。换句话说,定义在闭包中的函数可以“记忆”它创建时候的环境。
官方解释说完后,我们先来看一个简单计数的例子.
var c = 0;
function count(){
c++;
}
count();// 1
count();// 2
这个例子是利用了全局变量来实现,但是这里有个问题是,c这个变量也容易被其他方式所调用,这时候就可能会改变 c 的存储值.造成这个count计数的失效.那怎么很好的处理这个问题呢!我们会想到的是使用局部变量的方式来处理.比如:
function count(){
var c = 0;
function add(){
c++;
}
add();
}
count();// c = 1
count();// c = 1
因为这样创建之后,内部变量只存在于count函数创建执行的时候,执行完之后,整个函数就会被丢弃掉.就无法达到有记忆的能力.那要怎么来实现呢?那我们就用闭包来解决.我要重新提一次:闭包 = 函数 + 环境
function count(){
var c = 0;
function add(){
c++;
}
return add;
}
var ct = count();
ct(); // c = 1
ct(); // c = 2
这个时候我们就可以通过这个闭包来完成计数的能力.ct就是一个闭包函数,内部的环境就是这个局部变量 c. 这里我们达到的就是内部数据,外部来操作.那闭包除了这个还有什么其他功能呢?
用闭包模拟私有方法
这有点像JAVA的私有方法或者私有变量,只能允许自己来操作!如果外部操作,就需要设定公开的方法来操作.
var person = (function(){
var _name = "编程的人";
var age = 20;
return {
add:function(){
age++;
},
jian:function(){
age--;
},
getAge:function() {
return age;
},
getName:function(){
return _name;
},
setName: function (name) {
_name = name;
}
}
})();
person.add();
var age = person.getAge();
console.log(age)
person.setName("编程的人公众号:bianchengderen")
console.log(person.getName())
这里应该很容易理解了吧! 有点面向对象编程的感觉.当然Javascript现在也有面向对象编程的特点.这点我们以后来说明.
目前为止,我们从计数到内部私有化的例子,来说明闭包,希望大家能简单明白其中的道理,当然闭包还有其他的功能利用,是比较方便的.
本文属于吴统威的博客,微信公众号:bianchengderen的原创文章,转载时请注明出处及相应链接:http://www.wutongwei.com/front/infor_showone.tweb?id=157
,欢迎大家传播与分享.
分享到:
相关推荐
7. **闭包**:闭包是JavaScript中的一个高级概念,它允许内部函数访问外部函数的变量,即使外部函数已经执行完毕。 8. **原型与原型链**:JavaScript的继承基于原型,每个对象都有一个__proto__属性指向它的构造...
这一步骤式的教程旨在帮助初学者快速上手,理解JavaScript的核心概念。学习JavaScript的第一步通常是了解基本语法,包括如何声明和赋值变量,以及理解JavaScript的动态数据类型。接着,会介绍逻辑结构,如条件语句和...
此外,还可能涉及DOM操作、AJAX、jQuery库的使用等内容,旨在帮助初学者快速上手并建立起坚实的JavaScript基础。 "JavaScript语言参考手册"通常会提供详细的API参考,涵盖BOM(浏览器对象模型)和DOM(文档对象模型...
此外,JavaScript还有闭包(Closure)的概念,它允许函数访问并操作其外部作用域的变量,即使在其定义的作用域之外。 描述中的“跑马灯”和“自动滚屏阅读式公告栏”是JavaScript实现动态效果的实例。这些可以通过...
对于初学者,手册会提供清晰的示例和解释,帮助他们快速上手;对于有经验的开发者,手册可以作为一个随时查阅的参考资源,解决日常开发中的问题。 此外,标签“javascript 资料”表明这个压缩包中可能包含了其他与...
总之,《Head First JavaScript》中文版PDF及实例不仅提供了全面的JavaScript知识,还通过生动的示例和丰富的互动性帮助初学者快速上手这门语言。无论你是网页开发的新手,还是希望通过学习JavaScript来拓宽技能的...
对于初学者来说,可以快速上手jQuery,而对于有经验的开发者,可以更高效地查找和解决问题。 总的来说,这个压缩包为JavaScript的学习提供了丰富的素材,不仅有基础的实例教程,还有源码示例以及实用的库文档,覆盖...
作者用通俗易懂的语言解释了这些概念,使得初学者也能快速上手。 在对象和原型链方面,《悟透JavaScript》深入剖析了JavaScript的面向对象特性,包括构造函数、原型、原型链、继承机制。这部分内容对于理解和编写可...
本资源“五天学会javascript”旨在帮助初学者在短时间内掌握这一强大的工具,实现快速上手。以下是对JavaScript的一些核心知识点的详细介绍: 1. **基础语法**:JavaScript的基础包括变量、数据类型(如字符串、...
教程内容丰富,涵盖基础到高级,经典实例助你快速上手。 一、JavaScript基础 1. 变量与数据类型:理解JavaScript中的var、let和const声明变量的方式,以及基本数据类型(Number、String、Boolean、Null、Undefined...
书中可能包含如何使用jQuery选择元素、执行动画、处理Ajax请求等内容,让读者快速上手JavaScript开发。 最后,实例部分可能会涵盖一些现代JavaScript的特性,如ES6及以后版本的新特性,例如类(class)、模板字符串...
用户可以通过这个文件快速查找JavaScript内置对象、函数、方法和语法,同时可能还涵盖了错误处理、事件处理、DOM操作等内容,对于开发者来说,是一个不可多得的工具。 另一方面,`JavaScript课件.exe`可能是一个...
这些内容构成了JavaScript的基础,让初学者能够快速上手编写简单的脚本。特别是函数,它是JavaScript中的重要组成部分,不仅用于组织代码,还能作为一等公民,具备高阶函数特性,如函数柯里化和闭包。 接着,书中...
本教学资源旨在为初学者提供一个简单明了的学习路径,帮助那些对JavaScript语言没有基础的学员快速上手。 在JavaScript的教学中,我们将涵盖以下几个关键知识点: 1. **基本语法**:了解变量声明(var, let, const...
这份“JavaScript快速查询手册”旨在提供一个全面而实用的JavaScript知识点概览,帮助开发者迅速查找和理解常用功能。 1. **基础语法** - 变量声明:`var`, `let`, `const` 的区别和用法。 - 数据类型:包括基础...
这篇总结涵盖了JavaScript语言的基础知识,帮助初学者快速上手并深入理解这门强大的脚本语言。 首先,我们来看“JavaScript 数据类型”。JavaScript有七种数据类型:Undefined、Null、Boolean、Number、BigInt、...
本教程专为初学者设计,旨在帮助“菜鸟”快速掌握JavaScript基础知识并深入理解其工作原理。 一、JavaScript基础 JavaScript语法源自C语言,但更加简化,易于上手。它主要用在浏览器环境中,用于实现动态网页效果,...
手册内容涵盖JavaScript的基础语法、对象、函数、DOM操作、事件处理、AJAX、BOM等方面,旨在帮助初学者快速上手,同时也为有经验的开发者提供参考。 1. **基础语法**:JavaScript的基础包括变量声明(var, let, ...
- **函数与对象**:深入讲解函数定义、作用域、闭包以及如何创建和使用对象。 - **DOM操作与事件处理**:介绍如何操作文档对象模型(DOM),以及如何处理用户交互事件。 - **异步编程**:讲解异步编程的基本原理和技术...
学习jQuery可以快速上手前端开发,提高开发效率。 JavaScript的异步编程是其独特之处,主要体现在回调函数、Promise和async/await。了解如何处理异步操作,避免回调地狱,是成为资深开发者的关键。 最后,ES6...