1、this指向、闭包、全局/局部变量
var w=100;
function f1(){
function f2(){ //严格来说不算闭包,并没有调用局部变量;
document.write(this.w);
}
return f2;
}
f1()(); //100 ,this指向问题:window调用f2所以this指向window,this.w查找全局中的w
// ---------------分割线------------------
var w=100;
function f1(){
var w=101; //此处的w为局部变量w
function f2(){
document.write(this.w);
}
return f2;
}
f1()(); //100 ,this指向问题:window调用f2所以this指向window,this.w查找全局中的w,并没有涉及闭包中的f2调用f1的局部变量
// ---------------分割线------------------
var w=100;
function f1(){
var w=101; //此处的w为局部变量w
function f2(){
document.write(w);
}
return f2;
}
f1()(); //101 ,闭包问题:闭包f2调用父函数f1中的局部变量w
// ---------------分割线------------------
var w=100;
function f1(){
w=101; //全局变量,当f1执行时,会给外部的全局变量w重新复制为101
function f2(){
document.write(this.w);
}
return f2;
}
f1()(); //101 ,this指向问题:window调用f2所以this指向window,this.w查找全局中的w,而全局变量w被f1执行时重新复制为101
// ---------------分割线------------------
var w=100;
function f1(){
this.w=102; //f1执行时,window调用f1,this指向window,所以给全局变量w重新赋值
function f2(){
document.write(this.w);
}
return f2;
}
f1()(); //102 ,this指向问题:window调用f2所以this指向window,this.w查找全局中的w