🤖
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