JavaScriptにおける値と型の等値性
引用符付きの数値が、引用符なしの同じ数値と等しくならないように比較したいとします。言い換えれば、値だけでなくデータ型も考慮した比較を行いたいのです。
そのためには、演算子 == の代わりに演算子 === を使用する必要があります。次の例では、文字列 '3' と数値 3 を比較する際、変数は値は等しいものの型が異なるため条件は偽となります:
if ('3' === 3) {
console.log('+++');
} else {
console.log('---'); // こちらが実行される
}
しかし、2つの文字列 '3' を比較する場合は条件は真となります:
if ('3' === '3') {
console.log('+++'); // こちらが実行される
} else {
console.log('---');
}
数値同士の比較でも同様です:
if (3 === 3) {
console.log('+++'); // こちらが実行される
} else {
console.log('---');
}
演算子 == と演算子 === の違いは、値が同じでもデータ型が異なる場合に顕著に現れます。それ以外の場合、これらの演算子は同じように動作します。例えば、異なる数値を比較すれば、当然 '---' が出力されます:
if (2 === 3) {
console.log('+++');
} else {
console.log('---'); // こちらが実行される
}
コードを実行せずに、コンソールに何が出力されるか判断してください:
let test1 = '3';
let test2 = '3';
if (test1 == test2) {
console.log('+++');
} else {
console.log('---');
}
コードを実行せずに、コンソールに何が出力されるか判断してください:
let test1 = '3';
let test2 = '3';
if (test1 === test2) {
console.log('+++');
} else {
console.log('---');
}
コードを実行せずに、コンソールに何が出力されるか判断してください:
let test1 = 3;
let test2 = '3';
if (test1 == test2) {
console.log('+++');
} else {
console.log('---');
}
コードを実行せずに、コンソールに何が出力されるか判断してください:
let test1 = 3;
let test2 = '3';
if (test1 === test2) {
console.log('+++');
} else {
console.log('---');
}
コードを実行せずに、コンソールに何が出力されるか判断してください:
let test1 = 3;
let test2 = 3;
if (test1 === test2) {
console.log('+++');
} else {
console.log('---');
}