NO IMAGE

有一次,去一家公司面試前端。公司的筆試中有這樣一道題:

var word =“hello”;
function test(){
console.log(word); //第一次輸出
var word = “hello xiaoming”;
console.log(word); //第二次輸出
}
上面函式輸出的結果是?
我當時給的答案是hello hello xiaoming ,後來面試我的那個人給我指出了我的錯誤
正確的答案是: undefined hello xiaoming

原因如下:
javascript的函式作用域是指函式內宣告的所有變數在函式體內始終可見,這意味著變數在宣告之前已經是可用的。
函式裡的區域性變數回覆蓋全域性變數word,當javascript執行到第一次輸出 相當於只是在函式中宣告瞭區域性變數word並沒有賦值,沒有賦值的變數預設的是undefined 第一次輸出的是undefined ,當javascript執行到第二次輸出時,給word 進行了賦值word =hello xiaoming,所以第二次輸出的是hello xiaoming