🤖

JavaScriptだとdo-while(false)イディオムはラベル付きブロックで書ける

に公開

こんにちは!皆さんはdo-while(false)イディオムというのをご存知でしょうか?

do-while文というのは本来はループのための構文なのですが、while(false)を指定してbreakを呼び出すことで、疑似的な早期returnとして利用できるテクニックです。

// do-while(false)イディオムの例
do {
  if (a === "hoge") break;
  if (b === "fuga") break;
  doSomething();
} while(false);

で、僕はごく最近知ったのですが、JavaScriptだとこういう書き方をしなくても、ラベル付きブロックを使えば同じ事ができます。

block: {
  if (a === "hoge") break block;
  if (b === "fuga") break block;
  doSomething();
}

ループじゃなくてもラベル付きブロック内だとbreakできるんですね。

この方法だと、ブロックにラベル名をつけないといけないんですがdo-while文のようなループ構文を使うよりも直感的に見えるので、今後は疑似的な早期returnを使いたい場合はラベル付きブロックを使おうと思いました。皆さんはどっちの方が好みですか?

以上JavaScriptのちょっとした小ネタでした。そんじゃーね!

Discussion