Der er fire logiske operatorer i JavaScript: || (ELLER), && (OG), ! (IKKE), ?? (Nullish Coalescing). Her dækker vi de første tre, ??-operatoren er i den næste artikel.
Selvom de kaldes “logiske”, kan de anvendes på værdier af enhver type, ikke kun boolean. Deres resultat kan også være af enhver type.
Lad os se detaljerne.
|| (ELLER)
“ELLER”-operatoren repræsenteres med to lodrette stregsymboler:
result = a || b;
I klassisk programmering er den logiske ELLER beregnet til kun at manipulere booleske værdier. Hvis nogen af dens argumenter er true, returnerer den true, ellers returnerer den false.
I JavaScript er operatoren lidt mere kompliceret og mere kraftfuld. Men først, lad os se hvad der sker med booleske værdier.
Der er fire mulige logiske kombinationer:
alert( true || true ); // true
alert( false || true ); // true
alert( true || false ); // true
alert( false || false ); // false
Som vi kan se, er resultatet altid true undtagen i tilfælde, hvor begge operander er false.
Hvis en operand ikke er en boolean, konverteres den til en boolean for evalueringen.
For eksempel behandles tallet 1 som true, tallet 0 som false:
if (1 || 0) { // virker ligesom if( true || false )
alert( 'sand!' );
}
For det meste bruges ELLER || i et if-udsagn til at teste, om nogen af de givne betingelser er true.
For eksempel:
let hour = 9;
if (hour < 10 || hour > 18) {
alert( 'Kontoret er lukket.' );
}
Vi kan tilføje flere betingelser:
let hour = 12;
let isWeekend = true;
if (hour < 10 || hour > 18 || isWeekend) {
alert( 'Kontoret er lukket.' ); // det er weekenden
}
OR "||" finder den første sandfærdige værdi
Den logik, der er beskrevet ovenfor, er noget klassisk. Nu bringer vi “ekstra” funktioner i JavaScript.
Den udvidede algoritme fungerer som følger.
Givet flere OR’ed værdier:
result = value1 || value2 || value3;
OR || operatoren gør følgende:
- Evaluerer operander fra venstre mod højre.
- For hver operand konverteres den til en boolean. Hvis resultatet er
true, stopper den og returnerer den oprindelige værdi af den operand. - Hvis alle operander er blevet evalueret (dvs. alle var
false), returneres den sidste operand.