Qraft(クラフト) 資格・学習クイズアプリ

JavaScript入門 練習問題 16:関数:thisキーワードの挙動

JavaScriptのthisキーワードに関する説明として、正しいものはどれですか?

  1. 通常の関数(メソッド)内のthisは、その関数を呼び出したオブジェクトを参照する
  2. thisは常に関数が定義された場所のグローバルオブジェクトのみを参照し、呼び出し方によって変化することはない
  3. thisは変数と同様に、常にvarで宣言してから使用しなければならない
  4. thisはJavaScriptには存在せず、Javaなど他言語にのみ存在するキーワードである
  5. thisは関数の引数の数を表す特殊な値であり、オブジェクトの参照とは無関係である

Qraftユーザーの成績:難易度 Cランク(レーティング1178)・正答率 67%(8/12回正解)
レーティングは解いた人の実力と正誤から算出する難しさ(初期値1200)。ランクはその全問題中の順位(S+が最難関、F-が最易)

正解と解説を見る
正解:通常の関数(メソッド)内のthisは、その関数を呼び出したオブジェクトを参照する

通常の関数(メソッドとして呼び出される場合)におけるthisは、呼び出し元のオブジェクトを指します。

【正解の理由】
メソッド呼び出しの形式(obj.method())で関数が実行されると、その関数内のthisはobjを参照します。呼び出し方によってthisの指す対象が変わるのがJavaScriptの特徴です。

【不正解の理由】
• 「常にグローバルオブジェクトのみを参照し変化しない」:thisは呼び出し方によって変わるため、常に固定されているという説明は誤り
• 「varで宣言してから使用しなければならない」:thisは予約されたキーワードであり、変数のように宣言する必要はない
• 「JavaScriptには存在しない」:thisはJavaScriptの中心的な概念の一つであり、存在しないという説明は誤り
• 「引数の数を表す特殊な値」:引数の数を表すのはarguments.lengthなど別の仕組みであり、thisとは無関係

← 前の問題問題一覧次の問題 →
アプリで解いてレーティングを上げる(無料・登録不要)