关于js作用域变量和函数声明提升的总结

    var a = 1;

    function a() {
      console.log(3);
    }

    console.log(a); // 1
    a();            // 报错

 

    var a;

    function a() {
      console.log(2);
    }

    console.log(a); // 打印函数体
    a();            // 2

 一:

预解析时,函数声明创建的函数整体会提升到所在执行环境【作用域】的顶部,

            函数表达式创建的函数,仅仅提升变量名到所在执行环境【作用域】的顶部。

二:

当函数声明和变量声明同时存在时,函数声明的优先级更高;

当变量声明但没有赋值并且函数名和变量名一致时,此名称仍指向函数;

当变量名赋值且函数名和变量名一致,此名称指向变量,函数被取代,

 

你可能感兴趣的:(JS)