JavaScriptにおけるブール型との値の比較

前の例では、比較に 演算子 === を使用しました。この場合、変数は 値と型の両方において true と 等しいか比較されます。

このような比較には 演算子 == も使用できます。変数 test に 常に true または false のいずれかが 入るのであれば、何も変わりません:

javascriptlet test = true; // ここには true か false を書く

if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}

しかし、変数 test に 任意の値が入る可能性がある場合、 事態は遥かに複雑になります。

その場合、変数 test に ブール値以外が入ると、その値は まずブール型に変換され、その*後*に 比較が行われます。

例えば、変数 test に 数値 1 が入っているとします。この場合、まず 論理型、つまり true に変換されます。 そしてその後、比較が実行されます:

javascriptlet test = 1;

if (test == true) {
  console.log('+++'); // これが実行される
} else {
  console.log('---');
}

一方、例えば数値 0 は false に変換されます。結果として 条件式は '間違い' を出力します:

javascriptlet test = 0;

if (test == true) {
  console.log('+++');
} else {
  console.log('---'); // これが実行される
}

実際、このような比較は明示的に 次のように書き直すことができます:

javascriptlet test = 1;

if (Boolean(test) == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 1

論理型に変換した際に false を与える値を 思い出して書き出してください。

Задание 2

コードを実行せずに、 コンソールに何が出力されるか判断してください:

javascriptlet test = 1;
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 3

コードを実行せずに、 コンソールに何が出力されるか判断してください:

javascriptlet test = 0;
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 4

コードを実行せずに、 コンソールに何が出力されるか判断してください:

javascriptlet test = 1;
    
if (test == false) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 5

コードを実行せずに、 コンソールに何が出力されるか判断してください:

javascriptlet test = 1;
    
if (test != true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 6

コードを実行せずに、 コンソールに何が出力されるか判断してください:

javascriptlet test = '';
    
if (test == false) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 7

コードを実行せずに、 コンソールに何が出力されるか判断してください:

javascriptlet test;
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 8

コードを実行せずに、 コンソールに何が出力されるか判断してください:

javascriptlet test = 3 * 'a';
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}