はじめに
ES6 を勉強して知らないことがたくさんあったので忘れないようにまとめておきます。
let/const
今の JavaScript は、極力 var ではなく let と const を使います。var を使うと変数の巻き上げが起こり、スコープが分かりにくくなります。
-
let: ブロックスコープの局所変数を宣言する -
const: 再代入禁止の変数を宣言する
const N = 5;
for(let i = 0; i < N; i++) {
console.log(i);
}
アロー関数
次のような書き方をした関数を アロー関数 と呼びます。
const func = () => {
console.log("アロー関数");
};
func();
関数の呼び出し方や挙動は function と変わりないですが、関数内での this の扱いが異なります。
const func = (() => {
this.name = "aa";
return {
func1: function() {
console.log(this.name); // undifined
},
func2: () => {
console.log(this.name); // "aa"
},
func3() {
console.log(this.name); // undifined
}
})();
func.func1();
func.func2();
func.func3();
function の中で this を使うと関数の中を指すので、外で宣言している name は undifined になります。対して、このアロー関数の this は window を指し this.name の this と同じになります。
function で同じようなコードを書くには次のようにする必要があります。
const func = () => {
this.name = "aa";
const self = this;
return {
func1: function() {
console.log(self.name);
}
}
}