Arvojen vertailu totuusarvojen kanssa JavaScriptissä

Edellisessä esimerkissä käytimme vertailuun operaattoria ===. Tässä tapauksessa muuttujamme verrattiin yhtäsuuruuteen true:n kanssa sekä arvon että tyypin suhteen.

Tällaiseen vertailuun voidaan käyttää myös operaattoria ==. Jos muuttujassa test on aina joko arvo true tai false, niin mikään ei muutu:

javascriptlet test = true; // kirjoitetaan tähän joko true tai false

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

Mutta jos muuttujaan test voivat päästä mitkä tahansa arvot, niin kaikki muuttuu paljon monimutkaisemmaksi.

Tällöin, jos muuttujassa test ei ole totuusarvoa, niin tämä arvo muunnetaan ensin totuusarvoksi ja vasta sitten verrataan.

Oletetaan esimerkiksi, että muuttujassa test on luku 1. Tässä tapauksessa se muunnetaan ensin logiseksi tyypiksi, eli arvoksi true. Ja sitten suoritetaan vertailu:

javascriptlet test = 1;

if (test == true) {
  console.log('+++'); // tämä toimii
} else {
  console.log('---');
}

Mutta esimerkiksi luku 0 muunnetaan arvoksi false. Ja ehtomme tuloksena tulostaa 'epätosi':

javascriptlet test = 0;

if (test == true) {
  console.log('+++');
} else {
  console.log('---'); // tämä toimii
}

Käytännössä tällainen vertailu voidaan nimenomaisesti kirjoittaa uudelleen seuraavassa muodossa:

javascriptlet test = 1;

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

Muistakaamme ja kirjoitetaan, mitkä arvot logiseksi tyypiksi muunnettuna antavat false:n.

Задание 2

Määritä suorittamatta koodia, mitä tulostetaan konsoliin:

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

Määritä suorittamatta koodia, mitä tulostetaan konsoliin:

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

Määritä suorittamatta koodia, mitä tulostetaan konsoliin:

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

Määritä suorittamatta koodia, mitä tulostetaan konsoliin:

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

Määritä suorittamatta koodia, mitä tulostetaan konsoliin:

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

Määritä suorittamatta koodia, mitä tulostetaan konsoliin:

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

Määritä suorittamatta koodia, mitä tulostetaan konsoliin:

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