js中var变量的问题?-灵析社区

横刀立马007

代码如下: Document a = 1; function test() { console.log(a); // undefined var a = 2; console.log(a); // 2 } test 为什么第一个log打印是 undefined 而不是 1?那个全局的 a 应该在这里生效的才对啊

阅读量:17

点赞量:0

问AI
你问题的中的代码可以等价于下面的: a = 1; function test() { var a; console.log(a); // undefined a = 2; console.log(a); // 2 } "var a = 2; " 语句包含了声明变量和给变量赋值,因为变量提升(hositing)会把变量声明提升到函数开始位置,而赋值语句不会提升。所以运行到第一个"console.log(a);" 时,因为函数已经有 a 变量,就会输出 函数中 a 变量的值,因为只有声明没有初始化,所以是 undefined.