此Javascript代码返回';未定义';

此Javascript代码返回';未定义';,javascript,closures,Javascript,Closures,可能重复: 我需要一点帮助 var foo = { bar: function () { return this.baz; }, baz: 1 }; (function () { return typeof arguments[0](); })(foo.bar); 执行此代码段时返回“未定义” 有人能解释一下为什么会这样吗?您需要使用正确的通话范围。显式地将foo设置为作用域会得到预期的结果 var foo = { b

可能重复:

我需要一点帮助

 var foo = {
     bar: function () {
         return this.baz;
     },
     baz: 1
 };
 (function () {
     return typeof arguments[0]();
 })(foo.bar);
执行此代码段时返回“未定义”
有人能解释一下为什么会这样吗?

您需要使用正确的通话范围。显式地将foo设置为作用域会得到预期的结果

var foo = {
    bar: function () {
        return this.baz;
    },
    baz: 1
};
(function () {
    return arguments[0].call(foo);
})(foo.bar);

嗯,我以前看过这个片段,所以…@leppie和谷歌一起我发现:P令人难过的是,被接受的答案是错误的:X@Esailija:那甚至不是我记得的那一个!那是一两个星期前的事了。@Esailija-好发现!完全相同。即使副本中接受的答案不正确,也应关闭此问题。@jamesalardice问题中的代码实际上来自问题6