面試題----變量提升

小夥伴們,前一段時間一直在加班,沒有過濾面試題啦~今天我又要跟大家囉嗦幾句嘍~~~

在面試過程中尤其是筆試題,經常會出現變量提升及聲明沒有賦值的程序題,理解不好的話,就會入坑了,現在我們通過以下題目來理解一下:

if (!("b" in window)) {
    var b = 1;
}
alert(b);//undefined

1、這個題目的考察點:1、在作用域內的變量提升;2、變量只有聲明沒有賦值;3、所有全局變量都是window的屬性

2、變量提升其實很好理解。比如題中代碼,其實引擎是這樣讀取的:var b; if(!("b" in window)){ b = 1;}alert(b);

3、這段代碼的處理邏輯:(1)聲明一個變量b(2)"b" in window 結果爲true,但是!("b" in window)結果爲false,if語句不執行(3)alert(b),因爲b只有聲明沒有賦值,所以結果是undefined

第二個題目嘍:

function foo(a) {
    var a;
    return a;
}
function bar(a) {
    var a = 'bye';
    return a;
}
[foo('hello'), bar('hello')]//輸出結果爲:hello,bye

原釀臭臭也沒有一下看出來變量提升安靜;這個題目將變量提升之後就不難理解嘍:

var a;
function foo(a) {
    return a;
}
function bar(a) {
    a = 'bye';
    return a;
}
[foo('hello'), bar('hello')]//輸出結果爲:hello,bye



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章