JS面試題集錦及解析(個人向)

1 、

var a=10;
function test(){
    a=100;
    console.log(a);
    console.log(this.a);
    var a;
    console.log(a);
}
test();

//輸出: 100 10 100

這道題目是考察對變量聲明提升的理解 和 this關鍵字的指向性問題。

首先是變量提升,在JS中,使用var聲明的變量會被提升到當前詞法作用域的頂部,函數在編譯時變成了這樣

var a=10;
function test(){
    var a;
    a=100;
    console.log(a);
    console.log(this.a);
    console.log(a);
}
test();

這樣子就清晰了,第一次打印時,函數內部聲明瞭一個a,是100,第二次log時,因爲函數是直接調用的,window.test()誰調用this就指向誰,所以是window.a結果是10.

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