use strict で this がエラーを吐く

タイトルのとおり

ある大きな function の中で vars という変数を定義したとする

"use strict"

/// 大 function
var _vars = "hey!!!";
function something(hello) {
   hoge.fuga(params, function (p) {
      this._vars; /// エラーを吐く
   };
};

みたいなことが起きた。

どう怒られるかというと、

ReferenceError: _vars is not defined

とか言われる。

ES6 のドキュメントとか読んでいても this の扱い方としてはあっているはずなのになー、と思ったら、

"use strict"

/// 大 function
var _vars = "hey!!!";
function something(hello) {
   hoge.fuga(params, (p) => {
      this._vars; /// エラーを吐く
   };
};

という arrow 記述にしたら直った。

記述自体も新しくあわせろやっていうことですね。

個人的には function って書いてある方がある程度読みやすいと思うんだけどな……。