求解答2个 JS 问题
var x = 'global'
function foo(f) {
var x = 'foo';
return f;
};
function foo2(){
var x = 'foo2';
return function() { alert([this.x,x])};
}
var bar = foo(function(){ alert([this.x,x])});
var bar2 = foo2();
bar(); //global global
bar2(); //global foo2 ????这里为什么是foo2?
这2个定义有什么区别??
var name = 'global';
var ff = {
'name': 'ff',
'say':function(greet){
return this.name + ' and ' + greet;
}
}
var fff = {
'name':'fff',
'method':function(){
return ff.say('method');
},
'method2':function (callback){
return callback('method2');
}
}
alert([fff.method(),fff.method2(ff.say),fff.method2(function(greet){return this.name + ' and ' + greet;})]); //这里谁解释后面2个函数调用this为什么指向window??
求解答~~~
------解决方案--------------------foo2那个调用的是局部变量啊,后面那个你要搞清楚调用callback函数的是谁,是window吧,骚年
------解决方案--------------------var bar = foo(function(){ alert([this.x,x])}); ==
function foo(f) {
var oo = f;
var x = 'foo';
return oo;
};
f在x前面。
fff.method2(ff.say) 这样看就清楚。
var $a = ff.say;
var $x = $a('method');