MST

星途 面试题库

面试题:JavaScript变量作用域与提升机制之函数内变量访问

请分析以下JavaScript代码的输出结果,并解释原因: ```javascript function test() { console.log(a); var a = 2; console.log(a); } test(); ```
43.2万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 输出结果
    • undefined
    • 2
  2. 原因解释
    • 在JavaScript中,变量提升(hoisting)机制会将变量声明提升到函数作用域的顶部,但是变量的初始化不会提升。
    • 当执行console.log(a);时,由于变量a声明被提升,此时a已经存在于当前作用域,但还未被初始化,所以输出undefined
    • 当执行到var a = 2;时,a被初始化为2,所以第二个console.log(a);输出2