MST
星途 面试题库

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

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

知识考点

AI 面试

面试题答案

一键面试
  1. 输出结果
    • undefined
    • 1
  2. 原因解释
    • 在JavaScript中,变量存在提升机制。当函数test执行时,变量a的声明会被提升到函数作用域的顶部,但初始化(赋值a = 1)仍然在原来的位置。
    • 所以当执行console.log(a)时,a已经声明但还未初始化,此时a的值为undefined
    • 接着执行var a = 1;,对a进行了赋值。
    • 然后再次执行console.log(a),此时a的值为1,所以输出1