条件演算子を使えるようになりたい
【こちらは前サイトからの移植記事になります。】
概要
条件演算子がくると途端に読めなくなって、if/elseでいいやん。なんでそれすら略すんや!ギャルか!って思います。
日本語もさ、助詞を抜かすとだめじゃん…?
使いこなしたい
そんなこと言っても始まらないんで、どうすれば使いこなせるのかを考えたい。
世間的には条件演算子が悪か悪じゃないかで論争があるみたいですが、個人的には悪か悪じゃないかとかどうでもいいから使い分けようと思います。社会人でギャル語はアウトだけどギャルの間ではむしろ必要でしょ。そういうことだ(?)
で、そうなるとどこまで使うかが大事なのでは…?
いろいろな使い方を検証して、自分の中での条件演算子とif文の使い分けを考えたい。
条件演算子の基本の書き方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//if文 let b; if(a) { b = 1; } else { b = 0; } //条件演算子 let b = a ? 1 : 0; //trueのときだけというのは条件演算子ではできない //OK if(a) { let b = 1; } //NG let b = a ? 1; |
こうやって見ると、変数の指定くらいなら条件演算子の方がスッキリ書けるような。
条件によって関数を指定するのは?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
//if文1(変数に関数を入れてif文内で呼び出す) let a = true; let functionA = function(){ console.log('true'); a = false; }; let functionB = function(){ console.log('false'); a = true; }; $('button').on('click',function(){ if(a) { functionA(); } else { functionB(); } }); //条件演算子1 let a = true; let functionA = function(){ console.log('true'); a = false; }; let functionB = function(){ console.log('false'); a = true; }; $('button').on('click',function(){ a ? functionA() : functionB(); }); //if文2(if文内で呼び出す内容を決める) let a = true; $('button').on('click',function(){ if(a) { console.log('true'); a = false; } else { console.log('false'); a = true; } }); //条件演算子2 let a = true; $('button').on('click',function(){ a ? console.log('true') : console.log('false'); a = a ? false : true; }); |
if文/条件演算子ともに2パターンつくりました。内容は全部同じで、ボタンをクリックすると繰り返しtrueかfalseをコンソールログで返します。
if文1/条件演算子1は変数に関数を格納して、条件によって変数を呼び出す方法で、if文2/条件演算子2は条件によって内容が変わるというもの。
前者の感じだと条件演算子がシンプルでいいし、後者だとこの例は簡単だから条件演算子の方が短くなったけど、長い処理のときどうするの?という問題があるのでif文の方がいいですよね。
結局は使い分けだよなあ、と思います。
入れ子はぐんと可読性落ちますね
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
//if文 let a = 2; let b; if(a == 0) { b = 'zero'; } else if(a > 0) { b = 'プラス'; } else if(a < 0) { b = 'マイナス'; } else { b = a; } console.log(b); //条件演算子 let a = 0; let b = a == 0 ? 'zero' : a > 0 ? 'プラス' : a < 0 ? 'マイナス' : a ; console.log(b); //条件演算子を改行 let a = 0; let b = a == 0 ? 'zero' : a > 0 ? 'プラス' : a < 0 ? 'マイナス' : a; console.log(b); |
確かに、数行がスッキリはするけど…。条件式と結果がわかりにくいので、入れ子では使いたくないなあ。
可読性のために改行したらいいやんっていうのもなんか、それならもうif文書くわよ…って思いますね。
感覚だけでエンジニアやってる人間の個人的な感触として、括弧の後じゃない場合にはセミコロンは同じ行がいい…。伝われこの気持ち…!
結論
私の個人的なルールとして、条件演算子はtrue/falseでの変数呼び出しに使用したい。
参考
こちらの、”演算子”なんだから演算子らしく使おうっていう考え方で、条件演算子への苦手意識がなくなった気がします。