演算子は、変数や値に対してさまざまな操作を行うために使用され、コードのロジックを構築する基本要素となります。
この記事では、JavaScriptにおける主要な演算子の種類とその使い方について詳しく解説します。
演算子の理解は、JavaScriptの効率的なコーディングと問題解決の鍵となります。
基本的な演算子
JavaScriptの基本的な演算子は、数値の計算や変数の操作に使用されます。
これらの演算子を理解することで、基本的な数値処理や変数の操作ができるようになります。
算術演算子
算術演算子は、数値の計算を行うために使用されます。
// 加算
let a = 10;
let b = 5;
let sum = a + b; // resultは15
// 減算
let a = 10;
let b = 5;
let difference = a - b; // resultは5
// 乗算
let a = 10;
let b = 5;
let product = a * b; // resultは50
// 除算
let a = 10;
let b = 5;
let quotient = a / b; // resultは2
// 剰余
let a = 10;
let b = 3;
let remainder = a % b; // resultは1
// 累乗
let a = 2;
let b = 3;
let power = a ** b; // resultは8
単項演算子
単項演算子は、1つのオペランドに対して操作を行います。
インクリメント (++
)
インクリメント演算子は、変数の値を1増加させます。
前置と後置の2つの形があります。
let a = 5;
a++; // 後置: aの値は6になる
++a; // 前置: aの値は7になる
デクリメント (--
)
デクリメント演算子は、変数の値を1減少させます。
これも前置と後置の2つの形があります。
let a = 5;
a--; // 後置: aの値は4になる
--a; // 前置: aの値は3になる
代入演算子
代入演算子は、変数に値を割り当てるために使用されます。
基本の代入演算子
基本の代入演算子は、右側の値を左側の変数に割り当てます。
let a = 5;
複合代入演算子
複合代入演算子は、計算と代入を同時に行う演算子です。
これにより、コードを簡潔に書くことができます。
// 複合代入演算子
let a = 10;
a += 5; // aは15
a -= 3; // aは12
a *= 2; // aは24
a /= 4; // aは6
a %= 5; // aは1
a **= 3 // aは1
比較演算子
比較演算子は、2つの値を比較し、その結果を真(true
)または偽(false
)で返します。
条件分岐やループなどで使われることが多く、プログラムの制御フローを管理するために非常に重要です。
以下に、主な比較演算子を詳しく解説します。
等価演算子 (==
)
等価演算子は、2つの値が等しいかどうかを比較します。
型の違いは自動的に変換されるため、注意が必要です。
let a = 5;
let b = '5';
console.log(a == b); // true (数値と文字列が自動的に型変換されて比較される)
厳密等価演算子 (===
)
厳密等価演算子は、2つの値が型も含めて等しいかどうかを比較します。
型の変換は行われません。
let a = 5;
let b = '5';
console.log(a === b); // false (数値と文字列は異なる型として比較される)
不等価演算子 (!=
)
不等価演算子は、2つの値が等しくないかどうかを比較します。
型の違いは自動的に変換されます。
let a = 5;
let b = '5';
console.log(a != b); // false (数値と文字列が自動的に型変換されて比較される)
厳密不等価演算子 (!==
)
厳密不等価演算子は、2つの値が型も含めて等しくないかどうかを比較します。型の変換は行われません。
let a = 5;
let b = '5';
console.log(a !== b); // true (数値と文字列は異なる型として比較される)
大なり演算子 (>
)
大なり演算子は、左側の値が右側の値より大きいかどうかを比較します。
let a = 10;
let b = 5;
console.log(a > b); // true (10は5より大きい)
小なり演算子 (<
)
小なり演算子は、左側の値が右側の値より小さいかどうかを比較します。
let a = 10;
let b = 15;
console.log(a < b); // true (10は15より小さい)
大なりイコール演算子 (>=
)
大なりイコール演算子は、左側の値が右側の値より大きいか等しいかどうかを比較します。
let a = 10;
let b = 10;
console.log(a >= b); // true (10は10に等しい)
小なりイコール演算子 (<=
)
小なりイコール演算子は、左側の値が右側の値より小さいか等しいかどうかを比較します。
let a = 10;
let b = 15;
console.log(a <= b); // true (10は15より小さい)
比較演算子は、条件分岐(if
文)やループ(for
文、while
文)などで頻繁に使用されます。以下にいくつかの使用例を示します。
let age = 20;
if (age >= 18) {
console.log("You are an adult.");
} else {
console.log("You are a minor.");
}
for (let i = 0; i < 5; i++) {
console.log(i); // 0, 1, 2, 3, 4
}
論理演算子
論理演算子は、ブール値(true
またはfalse
)に基づいて論理的な操作を行うために使用されます。
条件分岐や制御フローの構築に非常に役立ちます。
以下に、主な論理演算子とその使い方を解説します。
AND (&&)
AND演算子は、両方のオペランドがtrue
である場合にのみtrue
を返します。
少なくとも一方がfalse
である場合は、false
を返します。
let a = true;
let b = false;
console.log(a && b); // false (両方がtrueでないため)
console.log(a && !b); // true (aはtrue、bはfalseなのでa && !bはtrue)
OR (||)
OR演算子は、少なくとも一方のオペランドがtrue
である場合にtrue
を返します。
両方がfalse
の場合にのみfalse
を返します。
let a = true;
let b = false;
console.log(a || b); // true (一方がtrueなので)
console.log(b || false); // false (両方がfalseなので)
NOT (!)
NOT演算子は、オペランドの論理値を反転させます。
true
はfalse
に、false
はtrue
に変わります。
let a = true;
let b = false;
console.log(!a); // false (aはtrueなので)
console.log(!b); // true (bはfalseなので)
論理演算子の組み合わせ
論理演算子は組み合わせて使用することで、複雑な条件を表現することができます。
以下にいくつかの使用例を示します。
let age = 25;
let hasLicense = true;
// AND 演算子の例
if (age >= 18 && hasLicense) {
console.log("You can drive.");
} else {
console.log("You cannot drive.");
}
// OR 演算子の例
let isMember = false;
let hasCoupon = true;
if (isMember || hasCoupon) {
console.log("You get a discount.");
} else {
console.log("No discount available.");
}
// NOT 演算子の例
let isRaining = false;
if (!isRaining) {
console.log("You can go outside without an umbrella.");
} else {
console.log("Take an umbrella with you.");
}
文字列演算子
JavaScriptでは、文字列に対する操作を行うための演算子がいくつかあります。
これらの演算子を使うことで、文字列の結合や比較を簡単に行うことができます。
以下に、主な文字列演算子とその使用方法を解説します。
結合演算子 (+)
結合演算子は、2つの文字列を結合して新しい文字列を作成します。
この演算子は、数値を文字列に変換して結合することもできます。
let str1 = "Hello";
let str2 = "World";
let greeting = str1 + " " + str2; // "Hello World"
console.log(greeting);
let num = 5;
let text = "The number is " + num; // "The number is 5"
console.log(text);
文字列の比較演算子
文字列の比較には、主に等価演算子(==
、===
)と不等価演算子(!=
、!==
)が使われます。
これらの演算子は、文字列の内容を比較して真(true
)または偽(false
)を返します。
等価演算子 (==, ===)
等価演算子は、2つの文字列が等しいかどうかを比較します。
==
は型変換を行うのに対し、===
は型変換を行わずに厳密に比較します。
let str1 = "hello";
let str2 = "hello";
let str3 = "Hello";
console.log(str1 == str2); // true
console.log(str1 === str2); // true
console.log(str1 == str3); // false
console.log(str1 === str3); // false
不等価演算子 (!=, !==)
不等価演算子は、2つの文字列が等しくないかどうかを比較します。
!=
は型変換を行うのに対し、!==
は型変換を行わずに厳密に比較します。
let str1 = "hello";
let str2 = "hello";
let str3 = "Hello";
console.log(str1 != str2); // false
console.log(str1 !== str2); // false
console.log(str1 != str3); // true
console.log(str1 !== str3); // true
三項演算子
三項演算子(条件演算子)は、JavaScriptにおける唯一の三項(3つの)演算子であり、オペランドを3つ使用します。
条件が真である場合と偽である場合の値を簡潔に書くことができるため、条件分岐を短く記述するのに便利です。
condition ? exprIfTrue : exprIfFalse
- condition: 評価される条件式です。
- exprIfTrue: conditionが真(
true
)の場合に返される式です。 - exprIfFalse: conditionが偽(
false
)の場合に返される式です。
三項演算子を使うことで、簡潔で読みやすいコードを書くことができます。
以下にいくつかの使用例を示します。
let age = 18;
let canVote = (age >= 18) ? "Yes" : "No";
console.log(canVote); // "Yes"
この例では、age
が18以上であるかどうかをチェックし、その結果に応じてcanVote
に”Yes”または”No”を代入します。
これは、以下のif-else
文と同等です。
let age = 18;
let canVote;
if (age >= 18) {
canVote = "Yes";
} else {
canVote = "No";
}
console.log(canVote); // "Yes"
ネストされた三項演算子
三項演算子はネストして使用することも可能ですが、可読性が低下するため、ネストの深さには注意が必要です。
let score = 85;
let grade = (score >= 90) ? "A"
: (score >= 80) ? "B"
: (score >= 70) ? "C"
: (score >= 60) ? "D"
: "F";
console.log(grade); // "B"
この例では、score
に基づいて成績(grade
)を割り当てています。
複数の条件をチェックする場合、ネストされた三項演算子を使うことで簡潔に記述できますが、複雑になる場合はif-else
文を使用する方が読みやすくなることがあります。
三項演算子の利点
条件分岐を短く記述することで、コードが簡潔になり、可読性が向上します。
シンプルな条件分岐を一行で記述できるため、コードがスリムになります。
三項演算子の注意点
ネストされた三項演算子を多用すると、可読性が低下することがあります。
そのため、複雑な条件分岐には適していません。
また、簡潔さを追求しすぎるとコードが理解しにくくなるため、過度の使用を避けて適切なバランスを保つことが重要です。
まとめ
JavaScriptの演算子は、変数や値に対する操作を効率的に行うための基本ツールです。
算術演算子や代入演算子、比較演算子、論理演算子など、さまざまな種類の演算子が存在し、それぞれ特定の用途で使用されます。
演算子の優先順位を把握することで、複雑な式を正確に評価し、コードの効率を最大限に引き出すことができます。
総じて、演算子をマスターすることは、JavaScriptプログラミングのスキルを向上させる重要なステップです。