2017-06-28 7 views
1

以下のようなJavaScriptコード:関数出力対象ではない関数型内のJavaScript typeof演算(本)

function aa(){ 
    console.log(typeof(this)) 
} 

console.log(typeof(aa)) 

aa() 

出力は、このコードを実行した後機能オブジェクトあります。

なぜコード出力の違いがありますか?

ありがとうございます!

+0

「aa」と「this」は異なる値を意味するため、そのうちの1つは関数ではありません。 'これがどのように動作するのか知りたい場合は、https://github.com/getify/You-Dont-Know-JS/blob/master/this%20%26%20object%20prototypes/ch1.mdを読むことをお勧めします。また、 'typeof'は関数ではなく演算子なので、' typeof aa'と書かなければなりません。 –

+0

こちらをご覧くださいhttps://stackoverflow.com/questions/1963357/this-inside-function – Alexis

+0

返信いただきありがとうございますが、node.jsで実行するのはどうですか?これは「これ」を指す? – suoyong

答えて

3

コンテキストを渡さずに呼び出された関数の実行中にthisは、ブラウザのグローバルwindowオブジェクトにバインドされます。

thisは、明示的にcallまたはapplyでそれを渡さない限り、決して関数オブジェクト自体ではありません。

function f(){console.log(typeof this);} 
f.call(f); 

の出力は、functionであろう。

+0

ありがとうございますが、node.jsでコードを実行していますが、ウィンドウは表示されません。また、FUNCTIONもjavascriptの型と思いますか? – suoyong

+0

文のためにあなたにマークしました: 'this'は決して関数オブジェクト自体ではありません! – suoyong

関連する問題