ES2015(ES6)の即時関数
たまにES2015(ES6)を使用しているのに即時関数をこのように記述しているコードを見かける。
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'
即時関数にもアロー関数が利用できるため下記のようにすればもっと短く書ける。
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を使用すれば関数自体がいらなくなるためさらに短く書ける。
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を使用しようのコーナーでした。