Jämförelse av värden med boolesk typ i JavaScript

I föregående exempel använde vi för jämförelse operatorn ===. I det här fallet jämfördes vår variabel för likhet med true både värde och typ.

För en sådan jämförelse kan man också använda operatorn ==. Om variabeln test alltid kommer att ha ett av värdena true eller false, så förändras ingenting:

javascriptlet test = true; // här skriver vi antingen true eller false

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

Men om variabeln test kan innehålla vilka värden som helst, blir allt myndigheter mer komplicerat.

I så fall, om variabeln test inte innehåller ett booleskt värde, kommer det värdet först att omvandlas till booleskt och först sedan kommer jämförelsen att ske.

Låt till exempel variabeln test innehålla talet 1. I det här fallet kommer det först att omvandlas till boolesk typ, det vill säga till true. Och sedan kommer jämförelsen att utföras:

javascriptlet test = 1;

if (test == true) {
  console.log('+++'); // detta kommer att triggas
} else {
  console.log('---');
}

Men till exempel kommer talet 0 att omvandlas till false. Och vårt villkor kommer som ett resultat att skriva ut 'incorrect':

javascriptlet test = 0;

if (test == true) {
  console.log('+++');
} else {
  console.log('---'); // detta kommer att triggas
}

I praktiken kan en sådan jämförelse uttryckligen skrivas om på följande sätt:

javascriptlet test = 1;

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

Kom ihåg och skriv ner vilka värden som när de konverteras till boolesk typ ger false.

Задание 2

Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:

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

Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:

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

Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:

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

Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:

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

Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:

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

Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:

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

Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:

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