MDN says of arrow functions:
Relation with strict mode
Given that this
is lexical, strict mode rules with regard to this
are just ignored.
var f = () => {'use strict'; return this};
f() === window; // or the global object
The rules of lexical this
take precedence over strict-mode this
rules.
We can see this easily in the ES2015 specification by examining the plain-English description of possible values for a function's [[ThisMode]]
slot, which can be lexical
, strict
, or global
:
Defines how this
references are interpreted within the formal parameters and code body of the function. lexical
means that this
refers to the this
value of a lexically enclosing function. strict
means that the this
value is used exactly as provided by an invocation of the function. global
means that a this
value of undefined
is interpreted as a reference to the global object.
In other words, a function's this
behavior can either be strict, non-strict, or lexical. If a function's [[ThisMode]]
is lexical (as it is for an arrow function), it renders the function's strict/non-strict status irrelevant for the purpose of determining this
-setting behavior.