2

関数がさまざまな方法で呼び出されたり返されたりすると、コードのさまざまな動作が見つかりました。それはかなり混乱しています。したがって、疑問を解消するために、コード全体を最小限に抑えました。

簡単な関数を考えてみましょう:

function f()
{
   //some code
}

var objf = f();

Q1. 現在objfは未定義です。なんで?何をf()返しますか?

function f()
{
   //some code
   return this;
}

var objf = f(); 

Q2. 何をf()返しますか?グローバルオブジェクト?

4

3 に答える 3

3

Q1. JavaScript の関数は常に値を返します。デフォルトundefinedの戻り値が であるコンストラクタを除いて、デフォルト値は ですthis。Q1 の例では戻り値が指定されていないため、インタープリターはデフォルト値 を返しますundefined

Q2. thisアプリケーションのコンテキストに応じてインタープリターによって更新される JavaScript キーワードです。Q2の例のように、オブジェクトから呼び出されない関数の場合this、グローバルオブジェクトを参照します。

「this」キーワードはどのように機能しますか?

于 2013-05-26T17:38:15.070 に答える
0

最初のケースでobjfは、実際には未定義になります。関数は何も返さないので、単に何かを発明してそれを返すのは賢明ではありません。

2 番目のケースでobjfは、Windowオブジェクトになります。

于 2013-05-26T17:32:30.947 に答える