Sammenligning af værdier med boolsk type i JavaScript

I det forrige eksempel brugte vi til sammenligning operatoren ===. I dette tilfælde blev vores variabel sammenlignet med lighed med true både på værdi og type.

Til sådan sammenligning kan man også bruge operatoren ==. Hvis variablen test altid vil være en af værdierne true eller false, så ændrer intet sig:

javascriptlet test = true; // skriver enten true eller false her

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

Men hvis variablen test kan indeholde enhver værdi, så bliver alt mere kompliceret.

I sådant tilfælde, hvis variablen test ikke indeholder en boolsk værdi, så vil denne værdi først blive konverteret til en boolsk værdi og først derefter blive sammenlignet.

Lad for eksempel variablen test indeholde tallet 1. I dette tilfælde vil det først blive konverteret til den logiske type, altså til true. Og derefter vil sammenligningen blive udført:

javascriptlet test = 1;

if (test == true) {
  console.log('+++'); // dette vil køre
} else {
  console.log('---');
}

Men for eksempel vil tallet 0 blive konverteret til false. Og vores betingelse vil som resultat udskrive 'forkert':

javascriptlet test = 0;

if (test == true) {
  console.log('+++');
} else {
  console.log('---'); // dette vil køre
}

Faktisk kan en sådan sammenligning eksplicit omskrives på følgende måde:

javascriptlet test = 1;

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

Husk og skriv, hvilke værdier der ved konvertering til den logiske type giver false.

Задание 2

Uden at køre koden, afgør hvad der udskrives i konsollen:

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

Uden at køre koden, afgør hvad der udskrives i konsollen:

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

Uden at køre koden, afgør hvad der udskrives i konsollen:

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

Uden at køre koden, afgør hvad der udskrives i konsollen:

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

Uden at køre koden, afgør hvad der udskrives i konsollen:

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

Uden at køre koden, afgør hvad der udskrives i konsollen:

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

Uden at køre koden, afgør hvad der udskrives i konsollen:

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