Logiska operatorer

Slutförd

Beslut kan kräva mer än en jämförelse och kan struktureras tillsammans med logiska operatorer för att skapa ett booleskt värde.

Logiska operatorer och booleska värden

Det finns specifika operatorer som låter oss ansluta många booleska instruktioner. Resultatet är en mer komplex instruktion som fortfarande utvärderas till true eller false. Du kan använda följande uppsättning operatorer för att konstruera dessa mer komplexa jämförelser:

Symbol beskrivning Exempel
&& Logisk AND: Jämför två booleska uttryck. Returnerar endast sant om båda sidor är sanna. (5 > 6) && (5 < 6 ) //One side is false, other is true. Returns false
|| Logisk OR: Jämför två booleska uttryck. Returnerar sant om minst en sida är sann. (5 > 6) || (5 < 6) //One side is false, other is true. Returns true
! Logiskt INTE: Returnerar det motsatta värdet för ett booleskt uttryck. !(5 > 6) // 5 is not greater than 6, but "!" will return true

Villkor och beslut med logiska operatorer

Du kan använda dessa komplexa operatorer med både tilldelningar men även med if och else -satser.

I tilldelningar

Som en del av tilldelningen av ett värde till en variabel kan du använda en eller (||) operator.

let isHoliday = true;
let isMember = true;
let hasDiscount = isHoliday || isMember;

Med föregående kod anger du om en kund kan ha en rabatt eller inte. Endast en av variablerna, isMember eller hasDiscount, behöver ha ett sanningsvärde för att variabeln hasDiscount ska tilldelas true.

I om... Annat

Du kan också använda den här typen av logisk operator i en if/else -instruktion. I följande kodexempel har du en situation där det finns två bärbara datorer, en med rabatt och en såld till fullt pris. Med hjälp av en || operator kan du skapa en mer komplex if sats.

let currentMoney= 800;
let laptopPrice = 1000;
let laptopDiscountPrice = laptopPrice - (laptopPrice * .20) //Laptop price at 20 percent off

if (currentMoney >= laptopPrice || currentMoney >= laptopDiscountPrice){
    //Condition was true. Code in this block will run.
    console.log("Getting a new laptop!");
}
else {
    //Condition was true. Code in this block will run.
    console.log("Can't afford a new laptop, yet!");
}

Dricks

Kommer du ihåg vad vi sa om att lära oss läsa kod? Vad säger koden dig? Får du en ny bärbar dator? Rulla nedåt för svaret.

Ja, det är du.

Negationsoperator

Du har sett hur du kan använda en if...else -instruktion för att skapa villkorslogik. Allt som går in i ett if behov av att utvärdera till sant eller falskt. Med hjälp av operatorn ! kan du negera uttrycket. Det skulle se ut så här:

if (!condition) {
  // runs if condition is false
} else {
  // runs if condition is true
}

Ternary-uttryck

Att använda if...else är inte det enda sättet att uttrycka beslutslogik. Du kan också använda något som kallas ternary-operator . Syntaxen för den ser ut så här:

let variable = condition ? <return this if true> : <return this if false>

Här är ett mer konkret exempel:

let firstNumber = 20;
let secondNumber = 10
let biggestNumber = firstNumber > secondNumber ? firstNumber: secondNumber;

Koden anger att:

om firstNumber är större än secondNumber, tilldela firstNumber sedan till biggestNumber, annars tilldela secondNumber.

Dricks

Det tar en minut att läsa den här koden några gånger. Förstår du hur de här operatorerna fungerar?

Uttrycket ternary är ett kompakt sätt att skriva följande kod:

let biggestNumber;
if (firstNumber > secondNumber) {
  biggestNumber = firstNumber;
} else {
  biggestNumber = secondNumber;
}

Dricks

Ta en stund att reflektera. Vilket av de två metoderna, ternary-uttryck eller om/annars, var lättare att förstå?