do式

do式が実装された - JS.next

へえ〜

ES7のfeatureなので、正式に標準化されるのは2017年以降になると思われますが、babelでは--stage=0ですでに動くようです。

// hoge.js
let x = 3
let y = do {
    let a = 1;
    var b = 2;
    a + b + x;
}

// console.log(a);
// console.log(b);  // do式はブロックスコープを作るのでaとbはここには無い
console.log(y);

let fn = do {
    let z = 4;
    let f = function () {
        return x + y + z;
    };
    f
}

console.log(fn());

んで

babel-node --stage=0 hoge.js 

結果

6
13

なるほどなるほど。トランスパイル結果を出力するとdo式は即時関数に置き換えられました。

以下のように書いてバベるとエラー

do {
    let a = 100;
    console.log(a);
}
SyntaxError: piyo.js: Unexpected token (24:0)
  22 | }
  23 |
> 24 |

これは do while 文が期待されるっぽいですね…。