欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-07 20:52:35
var a = 1; function a() { console.log(3); } console.log(a)...
    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

一:

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

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

二:

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

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

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