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 = 52.赋值5 给a
  3.打印a 会出现5
  4.打印window.a 会出现undefined(为什么打印出undefined,因为最开始时将var 的变量声明提升到了当前的function作用域中)
  5.将 10 重新赋值给 a
  6.打印a 结果 10
原文地址:https://www.cnblogs.com/liuwei0824/p/10450845.html