JavaScriptのはてな「?」とコロン「 : 」
〜条件演算子について。

〽️ 条件分岐です。 〽️ 条件演算子の基本形。  〽️ if文からの変更と注意点。 〽️ 関数も呼び出せる。 〽️ 簡単なもので試そう。





JavaScriptコードの「?」をまとめたページはこちら⬆︎。





syntax。


(条件)? (trueの場合):(falseの場合)


条件分岐です。


こんにちは、「ふ」です。
JavaScriptのコードで目にする、

a ? b:c

という、疑問符「?」とコロン「 : 」がセットになっている、謎の表記。
いきなり目にしたときは、こっちが『?』になりますよね💧

これは条件演算子とよばれるもので、

「条件aが成立するならb、成立しないならc」

という、条件分岐を行なっています。
また「条件」「真の場合」「偽の場合」と、オペランド(非演算子)が3つあることから「三項演算子」とも呼ばれています。

で、ややこしいネーミングばそれほど重要ではありません。今回は「?」と「 : 」による条件演算子の仕組みを紹介していきます。そしてサンプルをいくつか試してみて、条件演算子を自分のものにしてしまいましょう!

条件演算子の基本形。


条件演算子がよく使われるのが、変数や定数への代入です。

let a = 5;

変数aをつくって、値を数値の「5」としておきます。
次に変数bを作るのですが、aを使って「条件」を提案し、真偽(成立するか、成立しないか)によって代入する値を振り分けてみます。

let b = 「「1a<5?」」 1:2;

条件演算子を使うと、このような形に。
「=」の右側を言語化すると、

  「aは5より小さいか?」
  「真なら1を代入、偽なら2を代入」

ということになります。
その後、bを出力してみます。

console.log(b); 「「3//「2」と出力される」」

条件「a<5」は正しくないので、「:」の後ろに記述されている、偽のほうの処理「2を代入」が実行されたことがわかります。
次は条件が真になるように変更して、試してみましょう。

let b = 「「1a>3?」」 1:2; console.log(b); 「「3//「1」と出力される」」

条件「a>3」は真なので、「:」の前にある「1を代入」が実行されました。

「演算子」であること。

いま、変数に代入する例を紹介しました。
しかし条件演算子は「演算子」なので、単独で処理を記述することも可能です。

他の演算子、例えば「++」は数値を1増やすインクリメント演算子ですが、

a++;

と単独で処理を記述することが可能です。それと同じ使いかたができます。

let b; a<5? b = 1:b = 2; 「「1//演算子単独で記述」」 console.log(b); 「「3//「2」が出力される」」

ただしこのようにコードが長くなってしまうケースもあります。
条件演算子の中では変数を宣言することはできないので、あらかじめbを宣言しておく必要があります。新たに宣言する変数に関しては、代入形式で

let b = a<5? 1:2;

としたほうがシンプルですね。

if文からの変更と注意点。


「条件分岐」といえば、先づ思い浮かべるのが「if文」でしょう。
条件演算子を使えば、if文による条件分岐を簡潔に記述することもできます。ただし、注意点もあるので覚えておいてください。

引数にも条件演算子。


let c = 3; if(c == 3 ) { bbconsole.log("条件成立"); bb} else { bbcosole.log("不成立"); }

変数cが3に等しければ「条件成立」、そうでなければ「不成立」と出力する条件分岐です。
これをそのまま「直訳的」に条件演算子バージョンに変更すると、

c ==3? console.log("条件成立"):console.log("不成立");

となるのですが、ここは演算子ごと引数に入れてしまいましょう。

console.log(c == 3? "条件成立":"不成立");

すごくシンプルにすることができました。

偽のスルーはできない。

if文を条件演算子に書き換えるときの注意点はここ。
if文には、「else」の存在しないものもあります。たとえば、

let d = 10; if(d<10) { c = 4; } 次の処理 次の処理 ....

条件「d<10」であればcに「4」を代入するというif文。
条件に当てはまらなければこのif文はスルーされて、次の処理が実行されていきます。「当てはまらない場合の処理」は記述する必要はありません。

ところが条件演算子で同じことをすると、

let d = 10; d<10?c = 4; 「「4//エラー」」

条件不成立の場合の処理を省略すると、エラーになってしまいます。

もし「偽」の場合にスルーしたい場合には、if文を使うようにしてください。

関数も呼び出せる。


条件演算子を使って、関数を呼び出すこともできます。

function kan1() { alert ("おはよう"); } function kan2() { alert("こんにちは"); } let jikoku = 11;

「おはよう」「こんにちは」をそれぞれアラートする、「kan1」と「kan2」。
また時刻を代入するための変数「jikoku」も作って、初期値を「11」としました。

jikoku <= 10? kan1():kan2(); 「「3//「こんにちは」がアラートされる」」

このように書くと、「jikokuが10以下ならkan1を実行、そうでなければkan2を実行する」とできます。
「条件判定後の処理がいくつかある」などと複雑な場合には、関数を定義しておいて呼び出すほうがわかりやすくなります。

const aisatu = jikoku <= 10? kan1:kan2; aisatu();

また⬆︎のように、条件分岐そのものを関数として定義しておき、実行することもできます。

簡単なもので試そう。


今回はJavaScriptの条件演算子について紹介してきました。最後までお読みくださり、ありがとうございます。

ぜひご自分で、何か簡単なシチュエーションと条件をつくって、試してみてください。

実際にコードを書いてみると、うまく動作したりしなかったりするでしょう。しかしその試行錯誤を経たのちにはもう「?」や「:」がコードに出現してもちっとも驚かなくなります。
そう、条件演算子が「自分の所有物」となるのです。

「JavaScriptコードの何だこれ?」、シリーズ、まだまだ続きそうなので学習にお役立てください。

ではまた、会いたい? お会いしましょう : そんなこと言わないで〜



JavaScript、乱数の範囲や重複を指定〜Math.random使い方。

2021.11.17
整数/範囲/重複の有無を自在にあやつろう。

JavaScriptの矢印「=>」〜これはアロー関数というものです。

2022.01.09
使い方とメリットについて解説。


ブログのクリックをGoogle Analyticsで計測。

2021.11.30
新たなツールは導入せずともOK。











「ふ」です。

swift、web、ガジェットなど。役立つ情報や観ていてたのしいページを書いていきたいと思います。