首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript:没有变量的内部函数是否仍会导致闭包?

JavaScript:没有变量的内部函数是否仍会导致闭包?
EN

Stack Overflow用户
提问于 2019-12-24 06:32:45
回答 1查看 55关注 0票数 0
代码语言:javascript
运行
复制
    function outer(a, b) {
        a.addEventListener('click', function inner(ev) {
            console.log(ev);
        });
    }

上面示例中的事件侦听器函数是否仍然保持对外部函数[作用域]的引用并导致闭包,即使内部函数没有从外部显式地提到任何变量?

只要事件侦听器函数存在,保存变量'a‘和'b’的上下文是否仍然保存在内存中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-24 07:48:04

理论上,如果外部变量的任何内部函数仍然可达,则应保留其外部变量。

然而,现代浏览器(至少Chrome和FF )会查看它们的内部,并确定外部变量本身是否会被实际使用,如果没有,它们将被垃圾收集。

为了测试它:

复制和粘贴以下代码并在浏览器控制台中运行。

然后在控制台中运行console.log(a)console.log(b)以查看其暂停时的差异。

代码语言:javascript
运行
复制
function outer(a, b) {
  setTimeout(function inner() {
    debugger;
    a = 0;
  }, 1000);
}

var testA = 1
var testB = 1
outer(testA, testB);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59464736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档