MST

星途 面试题库

面试题:JavaScript中闭包常见误区之变量作用域相关

请描述以下代码输出结果,并解释原因。function outer() { let a = 1; function inner() { console.log(a); } a = 2; return inner; } const func = outer(); func();
37.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 输出结果
    • 输出 2
  2. 原因解释
    • outer 函数中,定义了变量 a 并赋值为 1,然后定义了内部函数 innerinner 函数会打印变量 a 的值。
    • 接着,将 a 的值修改为 2
    • 当执行 const func = outer(); 时,outer 函数执行,返回 inner 函数。此时,inner 函数形成了闭包,它可以访问 outer 函数作用域中的变量 a
    • 当执行 func(); 时,实际上是执行 inner 函数,由于闭包的特性,它访问到的 aouter 函数作用域中最后修改的值 2,所以打印出 2