どうも、こんにちは!ぴこっそです!
最近はJavaScriptの勉強をしており、いろいろな書き方や便利な構文に触れる機会も多くなりました。
そのなかでも最近気になっている「三項演算子」について、プログラミング初心者の私がどのように理解したのか、またメリット・デメリットも解説しようと思います。
三項演算子とは?
三項演算子とはなんなのかを解説していきます。
三項演算子とはずばり、
if文を短く、便利にかける「演算子」になります!!
三項演算子の基本形は、
条件式 ? 真のときの処理 : 偽のときの処理;
となります。
以下に例を挙げておきます。
let i = 0;
if(i % 2 == 0){
console.log('偶数');
}else{
console.log('奇数');
}
これがIF文で表した偶数か奇数かを判断するプログラムですが、これを三項演算子に書き直すと
let i = 0;
const result = (i % 2 == 0) ? '偶数' : '奇数';
console.log(result);
このように上のIF文と比べて、短くコーディングすることができました。
このように、三項演算子では、IF文を短く表すことができます。
三項演算子を使うメリット・デメリット
三項演算子では、IF文を短く表すことができるという特徴があるというの先ほど解説しました。
しかし、三項演算子はメリットとデメリットがあります。
メリット1:IF文を短く書ける
「三項演算子とは?」の解説にもありましたが、三項演算子を使うことによって、IF文を短く書けます。ですので、文章の可読性も向上し、みやすさもアップします。
メリット2:シンプルな条件分岐に最適
「AかBか」「偶数か奇数か」など、シンプルな条件を分岐させる際は、三項演算子は非常に役に立ちます。特にコードの可読性が向上するので、非常におすすめです。
このように三項演算子を使うことによって、IF文を短く書くことができ、さらにはシンプルな条件分岐を使う場合は可読性を向上させる上では非常に有用です。
続いて、三項演算子を使うデメリットを見てみましょう。
デメリット1:複雑な条件分岐では適さない
三項演算子では、「シンプルな」条件分岐を使う際には最適でコードの可読性を向上させる一方で、複雑な条件分岐では、逆にコードの可読性を低下させます。
const result = (x > 0)
? (x % 2 === 0 ? '正の偶数' : '正の奇数')
: (x % 2 === 0 ? '負の偶数' : '負の奇数');
上のコードを見てみると、どういうコードなのかが全くわかりません。
このように、三項演算子では、IF文を短く書けるものの、条件が複雑な場合や、種類が多い場合では、コードの可読性を低下させるため、IF文を使ったほうがいいことになります。
ちなみに、上のコードをIF文使って書き直すとこのようになります。
let result;
if (x > 0) {
if (x % 2 === 0) {
result = '正の偶数';
} else {
result = '正の奇数';
}
} else {
if (x % 2 === 0) {
result = '負の偶数';
} else {
result = '負の奇数';
}
}
(ちなみにこのIF文はChatGPTに聞いて作ってもらいました、、、)
デメリット2:初心者からみると読みづらい(初学者視点)
これはプログラミング初学者、私自身の見解になりますが、三項演算子はIF文に比べて、
わかりづらい!!
という側面があります。
私自身初めてこの構文を見たときには「?」となりました。
これは私の考察にもなりますが、学校で学ぶプログラミングの授業に三項演算子ではなく、IF文を使った条件分岐を教えている理由として、初学者でも理解しやすいからという要素があると考えています。
私自身、大学でプログラミングの授業を複数取っていましたが、今まで三項演算子なんて見たこともありませんでした。
まとめ
三項演算子は、IF文を短く書ける「演算子」であることがわかりました。
一見便利そうな演算子に見えますが、使い方は限られていて、
・複雑な条件分岐には向かない
・初学者視点から見てすこしわかりづらい
という要素もあることから、三項演算子は少し上級者向けな「演算子」というイメージを持ちました。
プログラミング初学者の私としては、まずIF文を理解してから、三項演算子を勉強した方が理解しやすいと考えております。
最後に
今回のブログ記事で「三項演算子」についてよく分かったと思った人が一人でもいれば、大変嬉しいと私は考えます。
ブログは毎日投稿を行っておりますので、ぜひ他の記事も見てみてください。
最後までご覧いただきありがとうございました。


コメント
★★☆☆☆