JavaScript闭包应用实例分析
这篇文章主要介绍了JavaScript闭包应用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript闭包应用实例分析文章都会有所收获,下面我们一起来看看吧。
创新互联建站服务项目包括伽师网站建设、伽师网站制作、伽师网页制作以及伽师网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,伽师网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到伽师省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
一 、词法定义域 Lexical
Closure闭包是编程语言Lexical Scoping的专有属性,区别于dynamic scoping。即函数执行调用的是其在定义过程中的”变量定义域“,而非其在调用时候的变量定义域。
Javascript的函数的初始状态不仅包括函数本体而且包括函数定义过程所在的定义域。
Like most modern programming languages, JavaScript uses lexical scoping. This means that functions are executed using the variable scope that was in effect when they were defined, not the variable scope that is in effect when they are invoked. In order to implement lexical scoping, the internal state of a JavaScript function object must include not only the code of the function but also a reference to the scope in which the function definition appears. This combination of a function object and a scope (a set of variable bindings) in which the function’s variables are resolved is called a closure in the computer science literature.
看下面的例子:
function makeCounter () { let counter = 0; return function() {return counter++;}; } let counter = makeCounter(); console.log(counter()); console.log(counter()); console.log(counter()); #+RESULTS: : 0 : 1 : 2
对这个嵌套函数而言,最有意思的一点是:当外部函数被调用返回后(这里是makeCounter()), 再也没有任何手段能够触及到 counter 这个变量。只有内嵌函数拥有专属权限抵达该变量。
二、Closure的标准定义
开发者通常应该都知道“闭包”这个通用的编程术语。
闭包 是指内部函数总是可以访问其所在的外部函数中声明的变量和参数,即使在其外部函数被返回(寿命终结)了之后。在某些编程语言中,这是不可能的,或者应该以特殊的方式编写函数来实现。但是如上所述,在 JavaScript 中,所有函数都是天生闭包的(只有一个例外,将在 "new Function" 语法 中讲到)。
也就是说:JavaScript 中的函数会自动通过隐藏的 [[Environment]] 属性记住创建它们的位置,所以它们都可以访问外部变量。
关于“JavaScript闭包应用实例分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“JavaScript闭包应用实例分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。
当前文章:JavaScript闭包应用实例分析
文章地址:http://myzitong.com/article/pcjsjs.html