console.log( a ); var a = 2; 执行输出undefined a = 2; var a; console.log( a ); 执行输出2 说明:javaScript 运行时在编译器阶段会最先处理var a;也就是变量被提升 foo(); function foo() { console.log( a ); // undefined var a = 2; var a = 2; } 执行输出undefined,执行foo();时找到了函数的声明,但实际代码写在foo()的后面…