摘要:古老定义闭包,是指函数变量可以保存在函数作用域内,因此看起来是函数将变量包裹了起来根据定义,包含变量的函数就是闭包定义一闭包是指可以访问其所在作用域的函数按照定义一的说法,需要通过作用域链在全局环境中查找变量的函数就是闭包定义二闭包是指有权
古老定义
</>复制代码
闭包(closure),是指函数变量可以保存在函数作用域内,因此看起来是函数将变量“包裹”了起来
</>复制代码
//根据定义,包含变量的函数就是闭包
function foo() {
var n = 0;
}
cosole.log(n) // Uncaught ReferenceError: n is not defined
定义一
</>复制代码
闭包是指可以访问其所在作用域的函数
</>复制代码
//按照定义一的说法,需要通过作用域链在全局环境中查找变量的函数就是闭包
var n = 0;
function foo() {
console.log(n); //0
}
foo();
定义二
</>复制代码
闭包是指有权访问另一个函数作用域中的变量的函数
</>复制代码
//根据定义二,访问上层函数的作用域的内层函数就是闭包
function foo() {
var a = 2;
function bar() {
console.log(a);
}
bar();
}
foo();
定义三
</>复制代码
闭包是指在函数声明时的作用域以外的地方被调用的函数
</>复制代码
//通过将该函数作为返回值或者作为参数被传递
function foo() {
var a = 2;
function bar() {
console.log(a); //2
}
return bar;
/*函数的返回值可以简写为:
return function {
console.log(a) //2
}
*/
}
foo()();
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/92671.html
摘要:如何使用闭包所以这时候我们就要用闭包去解决这个问题了,先看代码。计数器为这时候的就形成了一个闭包。一个闭包由两部分组成,函数和创建该函数的环境。就是创建了一个匿名函数调用函数解除对匿名函数的引用,以便释放内存 古老定义 闭包(closure),是指函数变量可以保存在函数作用域内,因此看起来是函数将变量包裹了起来。 //根据定义,包含变量的函数就是闭包 function foo() { ...
摘要:写在前面对于一个前端开发者,应该没有不知道作用域的。欺骗词法作用域有两个机制可以欺骗词法作用域和。关于你不知道的的第一部分作用域和闭包已经结束了,但是,更新不会就此止住未完待续 这是《你不知道的JavaScript》的第一部分。 本系列持续更新中,Github 地址请查阅这里。 写在前面 对于一个前端开发者,应该没有不知道作用域的。它是一个既简单有复杂的概念,简单到每行代码都有它的影子...
摘要:插件开发前端掘金作者原文地址译者插件是为应用添加全局功能的一种强大而且简单的方式。提供了与使用掌控异步前端掘金教你使用在行代码内优雅的实现文件分片断点续传。 Vue.js 插件开发 - 前端 - 掘金作者:Joshua Bemenderfer原文地址: creating-custom-plugins译者:jeneser Vue.js插件是为应用添加全局功能的一种强大而且简单的方式。插....
摘要:局部变量只在当前函数体内有效,出了函数体,就上一级的范围,局部变量无效。但是在中,函数内部有一个函数,它的函数体内的是指中声明的局部变量,而非全局变量。这就是一个非常典型的闭包了。 严格的讲,闭包常常表现为一个函数内部的函数,它使用了非自己定义的、自己所在作用域内的变量,并且使这些变量突破了作用域的限制。 函数内部的函数:私有函数 首先,我们从这个内部函数去说开,因为这个是形式上的,如...
阅读 1620·2021-11-22 09:34
阅读 1505·2021-09-22 14:57
阅读 3567·2021-09-10 10:50
阅读 1620·2019-08-30 15:54
阅读 3795·2019-08-29 17:02
阅读 3577·2019-08-29 12:54
阅读 2745·2019-08-27 10:57
阅读 3425·2019-08-26 12:24