MDN はアロー関数について次のように述べています。
厳格モードとの関係
それが語彙的であることを考えるとthis
、に関する厳格なモード規則this
は単に無視されます。
var f = () => {'use strict'; return this};
f() === window; // or the global object
レキシカルのルールはthis
、厳密モードのthis
ルールよりも優先されます。
これは、ES2015 仕様で、関数の[[ThisMode]]
slotlexical
の可能な値( 、strict
、または) の平易な英語の説明を調べることで簡単に確認できますglobal
。
this
関数の仮パラメーターとコード本体内で参照がどのように解釈されるかを定義します。は、字句的に囲んでいる関数の値を参照lexical
することを意味します。関数の呼び出しによって提供されたとおりに値が使用されることを意味します。の値がグローバル オブジェクトへの参照として解釈されることを意味します。this
this
strict
this
global
this
undefined
つまり、関数のthis
動作は正格、非正格、または字句のいずれかです。関数が (アロー関数の場合のように) レキシカルである場合、 -setting 動作[[ThisMode]]
を決定する目的で、関数の厳密/非厳密ステータスは無関係になります。this