ES2015(ES6)の即時関数は短く書けるしletならそもそも不要

ES2015(ES6)の即時関数は短く書けるしletならそもそも不要

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'

サンプル1

即時関数にもアロー関数が利用できるため下記のようにすればもっと短く書ける。

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'

サンプル2

さらに引数がないのであれば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'

サンプル3

以上、ES2015(ES6)では必ずletを使用しようのコーナーでした。