JavaScript 變量聲明提早

《JavaScript權威指南》中指出:JavaScript變量在聲明以前已經可用,JavaScript的這個特性被非正式的稱爲聲明提早(hoisting),即JavaScript函數中聲明的全部變量(但不涉及賦值)都被「提早」至函數的頂部。下面咱們從實例中看看:函數

實例1:spa

    var aa = "test";
    function myFunc(){
        console.log('aa值爲:'+aa);
        var aa = "TEST";
    }
    myFunc();

調用函數myFunc() 打印的結果爲 undefined ,由於函數做用域的特性,函數中申明的變量(但不涉及賦值)被「提早」至函數的頂部,因此局部變量在整個函數體始終有效,局部變量aa會覆蓋掉全局變量aa,所以打印的結果爲 undefined ,其運行過程等價於實例2,以下:code

實例2 :blog

    var aa = "test";
    function myFunc(){
        var aa;
        console.log('aa值爲:'+aa);
        aa = "TEST";
    }
    myFunc();

運行結果以下:ip

相關文章
相關標籤/搜索