1

重複の可能性:
関数の引数の受け渡しと戻り

これについて少し助けが必要です

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

このスニペットを実行すると「未定義」が返されます。なぜそうなのか説明してもらえますか?

4

1 に答える 1

0

呼び出しに適切なスコープを使用する必要があります。foo をスコープとして明示的に設定すると、期待される結果が得られます。

var foo = {
    bar: function () {
        return this.baz;
    },
    baz: 1
};
(function () {
    return arguments[0].call(foo);
})(foo.bar);
于 2012-07-04T08:49:40.103 に答える