首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

求解答2个 JS 有关问题

2013-12-26 
求解答2个 JS 问题var x globalfunction foo(f) {var x fooreturn f}function foo2(){var x

求解答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');


热点排行