《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