JavaScriptのエルビス演算子
結論、JavaScriptには三項演算子を縮めてかけるエルビス演算子はありません。
ただ、or(‖)演算子を使い、エルビス演算子のように書くことはできます。
1 |
// エルビス演算子風
var ob = a || b; |
なんでこれでエルビス演算子のような動きになるかというと、実はorの演算子は左側の処理がtrueだった場合、それより右側の処理は評価されません。
それによって左側の判定がtrueなら左側の値が、判定がfalseならば右側の値が使われるというわけです。
ちなみにandでも使えるのでは?と思った方。
ご想像どおり使えます。
例えば次の式ではobに””が入ります。
1 |
// and条件の左側が代入される例
var a = "";
var b = "test";
var ob = a && b;
console.log(ob)
→""
|
そして、次の場合にはtest2が代入されます。
1 |
// and条件の右側が代入される例
var a = "test1";
var b = "test2";
var ob = a && b;
console.log(ob)
→"test2"
|
ちょっと一瞬見た時にどういう処理が行われるのか分かりづらいですが、andとorではとにかく最後に評価された式の値が代入されます。
左側が代入される例では、aがfalse判定なので、もう右側の値を確認する必要が無いので、最後に評価された式は「a」であり””が代入されています。
右側が代入される例では、aがtrue判定なので、右側の値も確認する必要があります。なので最後に評価された四季は「b」なので”test2″が代入されています。
最後に
確かにif文を書かないでかけるかなり便利な書き方ではありますが、あまり一般的な書き方では無いように思えるので利用する際にはプロジェクトでこの演算子を使っていいかよく考えた上で使いましょう。
コメント