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.