变量定义但不能在javascript中工作,而这个代表窗口

Moh*_*han 4 javascript arguments function

我在下面有一个小代码片段

var foo = {
    bar: function () {
        return this.baz;
    },
    baz: 1
};
(function () {
    return typeof arguments[0]();
})(foo.bar);
baz = 1;
//result undefined
Run Code Online (Sandbox Code Playgroud)

foo.bar函数执行时,this指的是窗口范围,当然bazbaz=1在窗口中定义了什么.但该计划仍然没有工作和返回undefined.为什么它返回undefinedbaz在窗口定义,我从窗口执行foo.bar

xda*_*azz 7

当你执行类似的函数时arguments[0](),则this指的arguments是没有属性的对象baz,所以它仍然是undefined.

您可以通过以下方式绑定this到某个对象:

arguments[0].call(foo)arguments[0].apply(foo).