30/01/2021
I JavaScript er et udtryk en gyldig kodeenhed, der resulterer i en værdi. Ethvert komplekst program er bygget op af disse grundlæggende byggeklodser. Udtryk kan være simple, som en enkelt værdi eller en variabel, eller komplekse, sammensat af flere mindre udtryk ved hjælp af operatorer. At forstå, hvordan operatorer fungerer, er afgørende for at kunne skrive effektiv og fejlfri JavaScript-kode. Denne artikel vil guide dig gennem de forskellige typer af operatorer, deres funktioner og hvordan de bruges til at manipulere data og styre flowet i dine programmer.
For example, the addition (+) symbol is an operator that tells JavaScript engine to add two variables or values, while the equal-to (==), greater-than (>) or less-than (<) symbols are the operators that tells JavaScript engine to compare two variables or values, and so on. The following sections describe the different operators used in JavaScript.[/caption]
- Hvad er en Operator?
- Tildelingsoperatorer (Assignment Operators)
- Sammenligningsoperatorer (Comparison Operators)
- Aritmetiske Operatorer (Arithmetic Operators)
- Logiske Operatorer (Logical Operators)
- Bitvise Operatorer (Bitwise Operators)
- Operatørpræcedens (Operator Precedence)
- Andre Vigtige Operatorer
- Ofte Stillede Spørgsmål (FAQ)
Hvad er en Operator?
En operator er et symbol, der udfører en operation på en eller flere værdier (kaldet operander) for at producere et resultat. JavaScript har både binære og unære operatorer, samt en speciel ternær operator.
- Unær operator: Kræver en enkelt operand, enten før eller efter operatoren. Eksempel:
++x(præfiks) ellerx++(postfix). - Binær operator: Kræver to operander, en før og en efter operatoren. Eksempel:
3 + 4. Alle binære operatorer i JavaScript er "infix", hvilket betyder, at de placeres mellem operanderne. - Ternær operator: Den betingede operator (
? :) er den eneste i JavaScript, der tager tre operander.
Tildelingsoperatorer (Assignment Operators)
Den mest basale operator er tildelingsoperatoren (=), som tildeler en værdi til en variabel. For eksempel tildeler let x = 7; værdien 7 til variablen x. Men JavaScript tilbyder også en række sammensatte tildelingsoperatorer, som kombinerer en aritmetisk eller bitvis operation med en tildeling.
Eksempler på Tildelingsoperatorer
Disse operatorer er genveje til at udføre en operation og tildele resultatet tilbage til den oprindelige variabel.
let x = 10; x += 5; // Svarer til x = x + 5; (x er nu 15) let y = 20; y -= 10; // Svarer til y = y - 10; (y er nu 10) let z = 4; z *= 3; // Svarer til z = z * 3; (z er nu 12)Sammenligningsoperatorer (Comparison Operators)
Sammenligningsoperatorer sammenligner to operander og returnerer en logisk værdi (true eller false) baseret på, om sammenligningen er sand. Disse er fundamentale for at skabe betinget logik med if-sætninger og loops.
| Operator | Beskrivelse | Eksempel (returnerer true) |
|---|---|---|
== | Lig med (typekonvertering) | '5' == 5 |
=== | Strengt lig med (ingen typekonvertering) | 5 === 5 |
!= | Ikke lig med (typekonvertering) | '5' != 10 |
!== | Strengt ikke lig med (ingen typekonvertering) | 5 !== '5' |
> | Større end | 10 > 5 |
< | Mindre end | 5 < 10 |
>= | Større end eller lig med | 10 >= 10 |
<= | Mindre end eller lig med | 5 <= 5 |
Det er en stærk anbefaling altid at bruge den strenge sammenligning (=== og !==) for at undgå uventet adfærd forårsaget af automatisk typekonvertering.
Aritmetiske Operatorer (Arithmetic Operators)
Disse operatorer udfører matematiske beregninger på numeriske værdier. De mest kendte er addition (+), subtraktion (-), multiplikation (*) og division (/).
Specielle Aritmetiske Operatorer
- Rest (Modulus) (
%): Returnerer resten af en division.10 % 3returnerer1. - Inkrement (
++): Lægger 1 til sin operand. Hvis den bruges som præfiks (++x), returnerer den værdien *efter* inkrementering. Hvis den bruges som postfix (x++), returnerer den værdien *før* inkrementering. - Dekrement (
--): Trækker 1 fra sin operand. Fungerer analogt med inkrement-operatoren. - Eksponentiering (
): Opøfter den første operand i potensen af den anden operand.2 3returnerer8.
Logiske Operatorer (Logical Operators)
Logiske operatorer bruges typisk med booleske værdier (true/false). De er essentielle for at kombinere flere betingelser.
- Logisk AND (
&&): Returnerertrue, hvis begge operander er sande. Den udfører "short-circuiting": hvis den første operand er falsk, evalueres den anden slet ikke. - Logisk OR (
||): Returnerertrue, hvis mindst én af operanderne er sand. Den udfører også "short-circuiting": hvis den første operand er sand, evalueres den anden ikke. - Logisk NOT (
!): Inverterer en boolesk værdi.!truebliver tilfalse. - Nullish Coalescing Operator (
??): Returnerer den højre operand, hvis den venstre ernullellerundefined; ellers returnerer den den venstre operand. Dette er nyttigt for at tildele standardværdier.
const navn = null; const standardNavn = 'Anonym'; const visNavn = navn ?? standardNavn; // visNavn bliver 'Anonym' const alder = 0; const visAlder = alder ?? 30; // visAlder bliver 0, fordi 0 ikke er null eller undefinedBitvise Operatorer (Bitwise Operators)
Bitvise operatorer behandler deres operander som 32-bit heltal og udfører operationer på deres binære repræsentation. Disse er mere avancerede og bruges ofte i lav-niveau programmering, såsom grafikmanipulation eller kryptografi.
| Operator | Navn | Beskrivelse |
|---|---|---|
& | Bitvis AND | Sætter hver bit til 1, hvis begge bits er 1. |
| | Bitvis OR | Sætter hver bit til 1, hvis en af de to bits er 1. |
^ | Bitvis XOR | Sætter hver bit til 1, hvis kun en af de to bits er 1. |
~ | Bitvis NOT | Inverterer alle bits. |
<< | Venstre skift | Skifter bits mod venstre. |
>> | Tegn-propagerende højre skift | Skifter bits mod højre (bevarer fortegn). |
>>> | Nul-fyldt højre skift | Skifter bits mod højre (fylder med nuller). |
Operatørpræcedens (Operator Precedence)
Når et udtryk indeholder flere operatorer, bestemmer præcedens rækkefølgen, de evalueres i. For eksempel har multiplikation (*) højere præcedens end addition (+). Derfor vil 10 + 5 * 2 blive evalueret som 10 + (5 * 2), hvilket giver 20, ikke 30.
Hvis du er i tvivl om præcedens eller ønsker at tvinge en bestemt evalueringsrækkefølge, kan du altid bruge parenteser (). Udtrykket (10 + 5) * 2 vil resultere i 30, da additionen udføres først. At bruge parenteser kan også gøre din kode meget lettere at læse og forstå for andre udviklere.
Andre Vigtige Operatorer
typeof Operatoren
typeof er en unær operator, der returnerer en streng, som angiver typen af sin operand.
typeof 42; // "number" typeof "hello"; // "string" typeof true; // "boolean" typeof {}; // "object" typeof undefined; // "undefined" typeof null; // "object" (en historisk fejl i JavaScript) typeof (() => {}); // "function"Den Betingede (Ternære) Operator
Den ternære operator er en kompakt måde at skrive en simpel if-else-sætning på. Syntaksen er betingelse ? værdi_hvis_sand: værdi_hvis_falsk.
const alder = 20; const status = alder >= 18 ? 'Voksen': 'Mindreårig'; console.log(status); // Printer 'Voksen'Ofte Stillede Spørgsmål (FAQ)
Hvad er forskellen på `==` og `===`?
== (loose equality) sammenligner to værdier for lighed *efter* at have forsøgt at konvertere dem til en fælles type. === (strict equality) sammenligner værdierne uden typekonvertering. Hvis typerne er forskellige, returnerer den altid false. Det anbefales næsten altid at bruge === for at undgå uforudsigelige resultater.
Hvornår skal jeg bruge den nullish coalescing operator (`??`) i stedet for den logiske OR (`||`)?
Brug ??, når du vil tildele en standardværdi, men kun hvis den oprindelige værdi er null eller undefined. Brug ||, hvis du vil tildele en standardværdi, hvis den oprindelige værdi er en hvilken som helst "falsy" værdi (f.eks. 0, '' (tom streng), false, null, undefined). ?? er mere præcis, når 0 eller en tom streng er gyldige værdier.
Hvad betyder operatørpræcedens?
Operatørpræcedens er det sæt af regler, der definerer, i hvilken rækkefølge operatorer i et komplekst udtryk skal udføres. For eksempel udføres multiplikation før addition. Du kan tilsidesætte denne rækkefølge ved at bruge parenteser () for at gruppere de dele af udtrykket, der skal evalueres først.
Hvad er en funktion for en `delete` operator?
delete operatoren bruges til at fjerne en egenskab fra et objekt. For eksempel vil delete minBil.farve fjerne farve-egenskaben fra minBil-objektet. Det er vigtigt at bemærke, at den ikke kan slette variabler, funktioner eller ikke-konfigurerbare egenskaber og returnerer false, hvis sletningen mislykkes.
Hvis du vil læse andre artikler, der ligner Komplet Guide til JavaScript Operatorer og Udtryk, kan du besøge kategorien Sundhed.
