ES2015(ES6)の即時関数
たまにES2015(ES6)を使用しているのに即時関数をこのように記述しているコードを見かける。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var a = 'foo' ; var b = 'bar' ; ( function () { var a = 1; var b = 2; function add(a, b) { return console.log(a + b); // => 3 } add(a, b); })(); // ここはfoobarを出したい console.log(a + b); // => 'foobar' |
即時関数にもアロー関数が利用できるため下記のようにすればもっと短く書ける。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var a = 'foo' ; var b = 'bar' ; (() => { var a = 1; var b = 2; function add(a, b) { return console.log(a + b); // => 3 } add(a, b); })(); // ここはfoobarを出したい console.log(a + b); // => 'foobar' |
さらに引数がないのであればletを使用すれば関数自体がいらなくなるためさらに短く書ける。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | let a = 'foo' ; let b = 'bar' ; { let a = 1; let b = 2; function add(a, b) { return console.log(a + b); // => 3 } add(a, b); } // ここはfoobarを出したい console.log(a + b); // => 'foobar' |
以上、ES2015(ES6)では必ずletを使用しようのコーナーでした。