ECMAScript 6

最新版のFirefoxなど、ECMAScript 6の新機能が実装されているブラウザのコンソールに以下の内容を入力して、動作を確認してください

// デフォルトパラメータ
function func(a, b = 5) {
  return a * b;
}

func(5); // 25
    
// 可変長引数
function func(a, b, ...args) {
  return args.concat(a, b);
}

func(1, 2, 3, 4, 5); // [3, 4, 5, 1, 2]
    
// 定数
const PI = 3.14;
    
// 配列の展開演算子
var args = [1, 2];

console.log([0, ...args, 3, 4]); // [0, 1, 2, 3, 4]
    
// アロー演算子
[1, 2, 3, 4].reduce((a, b) => a + b); // 10

[1, 2, 3, 4].reduce(function (a, b) { return a + b }); // 10
    
// 分割代入
function func() {
  return [1, 2, 3];
}

var [a, b, c] = func();
console.log(a, b, c); // 1 2 3
    
// ブロックスコープの管理
var a = 0;

if (true) {
  let a = 1;
  console.log(a); // 1
}

console.log(a); // 0

for (let i = 0; i < 10; i++) {
}

console.log(i); // ReferenceError: i is not defined
    
// モジュール  ※執筆時点では動作しません
import func from 'module';
console.log(func());

import 'module' as m;
console.log(m.func());
    
// イテレータ
for (let v of ['a', 'b', 'c']) console.log(v);
// "a"
// "b"
// "c"

function List(o) {
  for (let k in o) {
    yield [k, o[k]];
  }
}

for (let [k, v] of List({a: 9, b: 8, c: 7})) console.log(k, v);
// "a" 9
// "b" 8
// "c" 7