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:
let 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:
let 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':
let 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:
let test = 1;
if (Boolean(test) == true) {
console.log('+++');
} else {
console.log('---');
}
Kom ihåg och skriv ner vilka värden som
när de konverteras till boolesk typ ger
false.
Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:
let test = 1;
if (test == true) {
console.log('+++');
} else {
console.log('---');
}
Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:
let test = 0;
if (test == true) {
console.log('+++');
} else {
console.log('---');
}
Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:
let test = 1;
if (test == false) {
console.log('+++');
} else {
console.log('---');
}
Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:
let test = 1;
if (test != true) {
console.log('+++');
} else {
console.log('---');
}
Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:
let test = '';
if (test == false) {
console.log('+++');
} else {
console.log('---');
}
Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:
let test;
if (test == true) {
console.log('+++');
} else {
console.log('---');
}
Utan att köra koden, bestäm vad som kommer att skrivas ut i konsolen:
let test = 3 * 'a';
if (test == true) {
console.log('+++');
} else {
console.log('---');
}