Js 语言中 变量提升问题
变量提升: 提升变量的声明。 函数声明式: 像这种形式: function foo() {}; 会发生变量提升。 函数表达式: var fn=function fn(){}; 不会发生变量提升。
var a = 1; 会将 a 的声明提升
a = 1; 等价于 window.a = 1;
代码解析:
function test() { a = 5; log(a); log(window.a); var a = 10; log(a); } test(); 上面代码执行过程>>>>>>> 1.将var 的变量提升声明 ,提升到当前的范围内最高作用域中, 此时a的声明被提升到function的作用域中(如不var:函数内的 a 会放到window下 : window.a = 5) 2.赋值5 给a 3.打印a 会出现5 4.打印window.a 会出现undefined(为什么打印出undefined,因为最开始时将var 的变量声明提升到了当前的function作用域中) 5.将 10 重新赋值给 a 6.打印a 结果 10