2017-06-15 5 views
1

私はjavascriptを初めて使用しています。なぜこのコードは返されますか?

const foo = { 
     bar: function() { return this.baz; }, 
     baz: 1, 
    }; 

    console.log((function() { 
     return typeof arguments[0](); 
    })(foo.bar)); 
+0

このコードはどこにありますか?そのIIFEと 'arguments [0]'のことは、不必要に複雑で、あなたの質問とは無関係です。 – Bergi

+0

引数[0]()を実行しているとき、 'this'は呼び出されたコンテキストを参照します。この場合、' window'と 'window'は' baz'というプロパティを持たないでしょう – JohanP

+0

@タシャーありますか?自由に再オープンして回答してください。しかし、唯一の/主要な問題は['this'キーワード]の誤解です(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this) – Bergi

答えて

-1

numberの返答が期待される場合は、コードから返すことはできません。 これはこのキーワードの誤解です(@Tushar @Bergiによって指摘されているように)

次のコードはそうしています。

function Foo(){ 
    this.baz = 1; 
}; 

Foo.prototype.bar = function() { 
    "use strict"; 
    return this.baz; 
} 

var foo = new Foo(); 
console.log((function() { 
    "use strict"; 
    return typeof arguments[0]; 
})(foo.bar())); 
+0

問題は 'bar'関数を呼び出すことです。その変数の型だけを表示するだけではありません。 – Tushar

+0

"正しい結果"とは何だと思いますか?私はOPが ''数字 ''、すなわち '1'の型を期待していたことは確かです。これはこのコードがもたらすものではありません。 – Bergi

+0

'number'のコードを編集しました。 –

関連する問題