今天做筆試的時候遇到了一題
console.log(a)
var a = 0
a = function() {console.log('111')}
function a() {console.log('222')}
最終輸出是 function a() {console.log('222')}
晚上在複習JS基礎的時候看到了變量提升,在阮一峰的文檔裡是這樣寫的
對於一開始那道題,進行過預編譯後是這樣的
變量聲明會被提升(即表達式前面,var a 的部分)
function的聲明也會被提升,整行代碼被提到了最前面,因此console.log(a)
時出現的不是undefined,而是預編譯後被提升到頭部的function a()
var a
function a() {console.log('222')}
console.log(a)
a = 0
a = function() {console.log('111')}