gpt4 book ai didi

javascript - 闭包是否必须有一个外部函数,或者它可以仅引用一个外部作用域?

转载 作者:行者123 更新时间:2023-12-01 02:57:03 24 4
gpt4 key购买 nike

我已经阅读了关于 JavaScript 闭包的巨型线程,我发现的答案之间似乎存在一些差异,并希望我能得到一些进一步的澄清。

线程中的一些答案指出,当内部函数引用外部函数的变量时,就会创建闭包。

我发现另一个答案表明这是一个闭包:

var a = 42;

function b() { return a; }

请注意,这里没有内部/外部函数,而只有一个函数。该人给出的解释是,闭包是指函数引用外部作用域时的情况。

所以我的问题是,只有当有两个函数(内部和外部)时,或者当函数引用外部作用域时,才会创建闭包,该外部作用域可能是函数,也可能不是函数(在这种情况下,它只是顶级范围)?

最佳答案

是的,闭包是一个函数 - any function - 引用外部作用域中的变量。

但是,在 ES6 之前,闭包确实只能引用函数作用域 ( even if there was a block scope ) 和全局作用域。鉴于全局范围内的闭包非常无聊(在没有词法闭包的语言中您会得到相同的行为),大多数闭包示例都将具有嵌套函数。

关于javascript - 闭包是否必须有一个外部函数,或者它可以仅引用一个外部作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46655658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com