っていう使い方もあるのか〜と久々に学びがあったのでメモ。
ラベル付き文
こんな風に、`for`とかループに好きな名前をつけられる。
outer: for (const item of items) { inner: for (const child of item.children) { // ... if (cond) continue outer; // ... } }
「内側のループにいる時に、外側もろとも`break`したり`continue`したりしたい」場合に便利なやつ。
で、このラベルはループにだけつけられると勝手に思い込んでたけど、実は・・!
if文にもラベル
よくよく考えると、ラベル付き"文"なので、それが文であればラベルを付けられる!そして`if`もれっきとした"文"だった。
というわけで、こんな風に使える。
outer: if (cond1) { // ... if (cond2) break outer; // ... }
という感じで、特定の場合に`if`文の処理を途中でやめられる!
`return`だと関数ぜんぶ終了しちゃうし、別の関数に分けるのもスコープがアレやし、という場合に便利なやつ。
ほかの文でも使えるけど、使いたくなる機会があるかどうかは不明。
あとはTerserとか通すと、単純な`return`が`return void(...)`みたく気を利かせて処理されてしまうことがあって、そうなると一文字のラベルをつけて`break`するほうが、トータルで1Bくらい軽くなるとのこと・・w
preact/props.js at 7e33abd70ceb32f19e82c281e6b4d35091920f6a · preactjs/preact · GitHub