快速理解javascript变量提升

作者: JokerPeng | 来源:发表于2017-06-16 10:24 被阅读15次

    先看一个简单的例子:

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

    结果很明显,打印出Hello World
    另外一个例子来了:

    var a='Hello World'; 
    (function(){ 
    console.log(a); 
    var a = "good morning!";
    })() 
    

    结果有点意外,打印的是undefined,为什么呢?看看上面代码的等价变换:

    var a='Hello World'; 
    (function(){ 
    var a;
    console.log(a); 
    a = "good morning!";
    })() 
    

    这里在函数作用域中变量声明 (var a) 提升了,但是初始化(a = "good morning!") 并不会提升,所以 a 变量是一个未定义的变量。
    总结一点就是在一个作用域中,声明可以提升,赋值不能提升。

    相关文章

      网友评论

        本文标题:快速理解javascript变量提升

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