何の因果か JavaScript について調べることになった。三項演算子
val ? "ok" : "failed"
みたいなのがあるのだが、
val && "ok" || "failed"
みたいな書き方をしばしば見かける。
実装がついてきているかは必ずしも知らないが、ECMA-262をみるべきだろう。
http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf
意外とコンパクトで読みやすい。
結論から言うと、上記の2構文は同等のロジックで評価されるようである。null とか
undefined にからんだ相違はない。相違は文法だけで、本物の三項演算子の ? のあとや : のあとには代入式を書くことができる(代入演算子より優先度が低い)が、代
替記法 && || ならば中に代入式を書くことができない(代入演算子より優先度が高い)。
JavaScript はあまり書かないが、代入演算子より優先度の高い三項演算子がほしいことはよくあるだろう。Ruby の
a = if b then c else d end
なんかはスタイルとして好まれないかもしれないけれどそうだ。
0 件のコメント:
コメントを投稿