JS变量提升

作者: 古朋 | 来源:发表于2018-05-30 10:54 被阅读8次

    废话不多说,直接看以下例子,代码地址

    函数声明和函数表达式

    a()
    function a(){
        console.log('a');
    }
    b()
    var b = function (){
        console.log('b')
    }
    //a
    //Uncaught TypeError: b is not a function
    

    很明显,这个大家都知道这个答案,就是很常见的作用域提前,我们下面来解析下上面的例子。其实上面的例子等价于:

    var a = function (){
        console.log('a')
    }
    var b;
    a()
    b()
    b = function(){
        console.log('b')
    }
    

    变量作用域提升(仅考虑局部变量)

    a()
    var a = 1;
    function a(){
      console.log('a')
    }
    a();
    //a
    //Uncaught TypeError: a is not a function
    

    等价于下面的代码

    var a;
    a = function(){
        console.log('a')
    }
    a()
    a = 1;
    a()
    

    到这里大家应该都明白了

    相关文章

      网友评论

        本文标题:JS变量提升

        本文链接:https://www.haomeiwen.com/subject/ondtsftx.html