条件判定と分岐
この章では、javascriptで条件を判定し、処理する内容を分岐させる方法として、if-else文を紹介します。
真偽値
条件判定の基準となるものは真偽値であり、true
とfalse
のどちらかを取ります。
晴れていて涼しくなければプールに行こう
といった処理分岐もtrue
とfalse
によって行われます。
- 晴れている? :
true
- 涼しい? :
false
- 晴れていて涼しくない? :
true && !false
→true
- → よしプールに行こう
といった感じですね。
さらに晴れているかどうかも、内部的にはお天気センサーから取った実測値と、設定された「晴れ閾値」を数値として比較してture
かfalse
かを判断しています。
比較演算子
数値を比較する方法としては次のようなものがあります。
1 == 1
// true
1 == 100
// false
1 != 1
// false
1 != 100
// true
100 < 100
// false
100 <= 100
// true
==
は「等しいかどうか」を意味します!=
は「等しくないかどうか」を意味します<
は「未満」を意味します<=
は「以下」を意味します
また数値以外のタイプ、例えば文字列も次のように比較することができます。
"わん" == "わん"
// true
"わん" == "にゃー"
// false
論理演算子
条件式を記述するために、論理演算子を使うことができます。
!
: 否定(直後の真偽値を反転させる)&&
: 論理積(AかつB)||
: 論理和(AまたはB)
例えば「xは10以上20未満の数値ではない」という条件式は次のように書きます。
!(10 <= x && x < 20)
別解としてこれは「xは10未満または20以上の数値である」と等価なので、次のようにも書くことができます。
x < 10 || 20 <= x
これらの式は評価の結果true
かfalse
のどちらかに置き換えられます。
if-else文
条件によって処理を分岐させるにはif-else文を使います。文法はこうです。
if (条件式) {
// 真のときの処理
} else {
// 偽のときの処理
}
例題として次の問題を考えます。
数値x=100が3で割り切れるかどうかを出力してください
コードは次のようになります。
var x = 100
if (x % 3 == 0) {
console.log("割り切れます")
} else {
console.log("割り切れません")
}
また、少し発展した問題を考えます。
数値x=100が3または5で割り切れるかどうかを出力してください
これは3で割り切れなかった時に5で割り切れるかどうかをチェックすれば答えられます。
var x = 100
if (x % 3 == 0) {
console.log("割り切れます")
} else {
if (x % 5 == 0) {
console.log("割り切れます")
} else {
console.log("割り切れません")
}
}
else節の中にさらにif-else文が入った構造になっています。
ちょっと見た目がごちゃごちゃしていますね。
if-else文は中身が1つの文しかないときは{}
で囲わなくてよいので、次のように省略することができます。
// 省略形①
var x = 100
if (x % 3 == 0) {
console.log("割り切れます")
} else if (x % 5 == 0) {
console.log("割り切れます")
} else {
console.log("割り切れません")
}
さらに省略して次のようにも書けます。
// 省略形②
var x = 100
if (x % 3 == 0)
console.log("割り切れます")
else if (x % 5 == 0)
console.log("割り切れます")
else
console.log("割り切れません")
いずれも正しいプログラムですが、省略形②で書くと逆に読みにくくなってしまうことが多いので、省略形①が好まれる傾向があります。
別解としては「3または5で割り切れる」という条件を1つの式で表し、次のように書くのも良い方法です。
// 別解
var x = 100
if (x % 3 == 0 || x % 5 == 0) {
console.log("割り切れます")
} else {
console.log("割り切れません")
}