MST

星途 面试题库

面试题:JavaScript 普通函数的闭包与作用域链结合考察

编写一个 JavaScript 普通函数,该函数返回另一个函数,且内部函数能够访问外部函数的局部变量形成闭包,并解释闭包如何影响作用域链以及在实际应用中可能出现的内存问题。
30.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
function outerFunction() {
    let localVar = '这是外部函数的局部变量';
    return function innerFunction() {
        console.log(localVar);
    };
}

闭包会在内部函数定义时,将外部函数的活动对象添加到内部函数的作用域链中。这样内部函数就可以访问到外部函数的局部变量。

在实际应用中,由于闭包会使外部函数的活动对象一直存在于内存中,不会被垃圾回收机制回收。如果大量使用闭包且没有及时释放引用,可能会导致内存泄漏,使内存占用不断增加,影响程序性能。