JavaScriptにおけるブール型との値の比較
前の例では、比較に
演算子 === を使用しました。この場合、変数は
値と型の両方において true と
等しいか比較されます。
このような比較には
演算子 == も使用できます。変数 test に
常に true または false のいずれかが
入るのであれば、何も変わりません:
let test = true; // ここには true か false を書く
if (test == true) {
console.log('+++');
} else {
console.log('---');
}
しかし、変数 test に
任意の値が入る可能性がある場合、
事態は遥かに複雑になります。
その場合、変数 test に
ブール値以外が入ると、その値は
まずブール型に変換され、その*後*に
比較が行われます。
例えば、変数 test に
数値 1 が入っているとします。この場合、まず
論理型、つまり true に変換されます。
そしてその後、比較が実行されます:
let test = 1;
if (test == true) {
console.log('+++'); // これが実行される
} else {
console.log('---');
}
一方、例えば数値 0 は
false に変換されます。結果として
条件式は '間違い' を出力します:
let test = 0;
if (test == true) {
console.log('+++');
} else {
console.log('---'); // これが実行される
}
実際、このような比較は明示的に 次のように書き直すことができます:
let test = 1;
if (Boolean(test) == true) {
console.log('+++');
} else {
console.log('---');
}
論理型に変換した際に
false を与える値を
思い出して書き出してください。
コードを実行せずに、 コンソールに何が出力されるか判断してください:
let test = 1;
if (test == true) {
console.log('+++');
} else {
console.log('---');
}
コードを実行せずに、 コンソールに何が出力されるか判断してください:
let test = 0;
if (test == true) {
console.log('+++');
} else {
console.log('---');
}
コードを実行せずに、 コンソールに何が出力されるか判断してください:
let test = 1;
if (test == false) {
console.log('+++');
} else {
console.log('---');
}
コードを実行せずに、 コンソールに何が出力されるか判断してください:
let test = 1;
if (test != true) {
console.log('+++');
} else {
console.log('---');
}
コードを実行せずに、 コンソールに何が出力されるか判断してください:
let test = '';
if (test == false) {
console.log('+++');
} else {
console.log('---');
}
コードを実行せずに、 コンソールに何が出力されるか判断してください:
let test;
if (test == true) {
console.log('+++');
} else {
console.log('---');
}
コードを実行せずに、 コンソールに何が出力されるか判断してください:
let test = 3 * 'a';
if (test == true) {
console.log('+++');
} else {
console.log('---');
}