Varje villkorssats du någonsin kommer att skriva är uppbyggd av fyra grundläggande operatorer: AND, OR, NOT och XOR. När dessa väl sitter i ryggmärgen blir det dramatiskt lättare att läsa komplexa villkorssatser.

AND (&&)

AND returnerar true bara när båda sidorna är sanna.

isAdult && hasTicket   // true bara om båda villkoren är uppfyllda
ABA AND B
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

OR (||)

OR returnerar true när minst en sida är sann.

isAdmin || isModerator  // true om någon av rollerna gäller
ABA OR B
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

NOT (!)

NOT vänder helt enkelt på ett värde. Det är en unär operator — den behöver bara en indata.

!isBanned   // true när isBanned är false, och vice versa
ANOT A
truefalse
falsetrue

XOR (exklusivt eller)

XOR är mindre vanligt i vardaglig kod, men dyker upp i feature flags, toggle-logik och paritetskontroller. Den returnerar true bara när de två sidorna är olika.

// Många språk har ingen dedikerad XOR-operator för booleaner,
// så den skrivs ofta så här:
const xor = (a, b) => a !== b;
ABA XOR B
truetruefalse
truefalsetrue
falsetruetrue
falsefalsefalse

Prioritetsordning spelar roll

Precis som aritmetik har en operationsordning, har boolesk logik det också. NOT binder starkast, sedan AND, och sedan OR. Det betyder att:

a || b && c
// utvärderas som:
a || (b && c)

Är du osäker, lägg till parenteser. Explicit gruppering kostar ingenting och räddar nästa utvecklare (ofta du själv, sex månader senare) från att behöva räkna ut prioritetsreglerna på nytt.

Härnäst: vi sätter ihop dessa operatorer i fullständiga sanningstabeller så att du kan spåra igenom varje villkorssats, oavsett hur nästlad den är.