Dette kapitel opsummerer kort de funktioner i JavaScript, som vi har lrt indtil nu, med srlig opmrksomhed p subtile jeblikke.
Kodestruktur
Udsagn afsluttes med et semikolon:
alert('Hello'); alert('World');
Normalt behandles et linjeskift ogs som en afgrnser, s det ville ogs fungere:
alert('Hello')
alert('World')
Dette kaldes automatisk semikolonindsttelse. Nogle gange virker det ikke, for eksempel:
alert("Der vil vre en fejl efter denne besked")
[1, 2].forEach(alert)
De fleste guider anbefaler, at vi br stte et semikolon efter hvert udsagn, men det er ikke et krav, og det er op til dig at beslutte, om du vil bruge dem eller ej.
Semikoloner er ikke pkrvet efter kodeblokke {...} og syntaks-konstruktioner med dem som lkker:
function f() {
// ingen semikolon ndvendig efter funktionsdeklaration
}
for(;;) {
// ingen semikolon ndvendig efter lkken
}
Men selv hvis vi kan stte et ekstra semikolon et sted, er det ikke en fejl. Det vil blive ignoreret.
Mere information: Kodens struktur.
Strict mode
For fuldt ud at aktivere alle funktioner i moderne JavaScript, kan man starte scripts med "use strict".
'use strict';
...
Dette direktiv skal vre verst i et script eller i begyndelsen af en funktionskrop.
Uden "use strict" fungerer alt stadig, men nogle funktioner opfrer sig p den gammeldags, kompatible mde. Vi foretrkker generelt den moderne opfrsel.
Nogle moderne funktioner i sproget (som klasser, som vi vil studere i fremtiden) aktiverer implicit strict mode.
Mere information: Den 'moderne' metode, "use strict".
Variable
Kan deklareres med:
letconst(konstant, kan ikke ndres)var(gammel stil, vil se senere)
Et variabelnavn kan indeholde:
- Bogstaver og cifre, men det frste tegn m ikke vre et ciffer.
- Tegnene
$og_er normale, p lige fod med bogstaver. - Ikke-latinske alfabeter og hieroglyffer er ogs tilladt, men bruges almindeligvis ikke.
Variable er dynamiske datatyper. De kan gemme enhver vrdi:
let x = 5;
x = "John";
Der er 8 datatyper:
numberfor bde flydende og heltal,bigintfor heltal af vilkrlig lngde,stringfor tekststrenge,booleanfor logiske vrdier:true/false,nullen datatype med en enkelt vrdinull, der betyder tom eller findes ikke,undefineden datatype med en enkelt vrdiundefined, der betyder ikke tildelt,objectogsymbolfor komplekse datastrukturer og unikke identifikatorer, som vi endnu ikke har lrt.
Operatoren typeof returnerer typen for en vrdi, med to undtagelser:
typeof null == "object" // en "gammel fejl" i sproget
typeof function(){} == "function" // funktioner behandles specielt
Mere information: Variables og Datatyper.
Interaktion
Vi bruger browseren som arbejdsomrde, s grundlggende UI-funktioner vil vre:
prompt(question, [default])- Stil et
sprgsml, og returner enten det, som besgende indtastede, ellernull, hvis de klikkede p anuller. confirm(question)- Stil et
sprgsml, og foresl at vlge mellem Ok og Annuller. Valget returneres somtrue/false. alert(message)- Vis en
besked.
Alle disse funktioner er modale, de pauser kodeudfrelsen og forhindrer besgende i at interagere med siden, indtil de svarer.
For eksempel:
let userName = prompt("Hvad er dit navn?", "Karsten");
let isTeaWanted = confirm("Vil du have noget te?");
alert( "Besgende: " + userName ); // Karsten
alert( "Te nskes: " + isTeaWanted ); // true eller false
Mere information: Interaktion: alert, prompt, confirm.
Operatorer
JavaScript understtter flgende operatorer:
- Aritmetiske
-
Almindelige:
* + - /, ogs%for rest og**for potens af et tal.Den binre plus
+sammenkder strenge. Og hvis en af operanderne er en streng, konverteres den anden ogs til en streng:alert( '1' + 2 ); // '12', string alert( 1 + '2' ); // '12', string - Tildelingsoperatorer
-
Der er en simpel tildeling:
a = bog kombinerede soma *= 2. - Bitvise operatorer
-
Bitvise operatorer arbejder med 32-bit heltal p det laveste, bit-niveau: se dokumentationen, nr de er ndvendige.
- Betinget operator
-
Den eneste operator med tre parametre:
cond ? resultA : resultB. Hvisconder sand, returneresresultA, ellersresultB. - Logiske operatorer
-
Logisk OG
&&og ELLER||udfrer short circuit-evaluering og returnerer derefter vrdien, hvor den stoppede (ikke ndvendigvistrue/false). Logisk IKKE!konverterer operanden til boolesk type og returnerer den inverse vrdi. - Nullish coalescing-operator
-
??-operatoren giver en mde at vlge en defineret vrdi fra en liste af variabler. Resultatet afa ?? bera, medmindre det ernull/undefined, s er detb. - Sammenligninger
-
Lighedstjek
==for vrdier af forskellige typer konverterer dem til et tal (undtagennullogundefined, der er lige med hinanden og ikke noget andet), s disse er lige:alert( 0 == false ); // true alert( 0 == '' ); // trueAndre sammenligninger konverterer ogs til et tal.
Den strenge lighedoperator
===foretager ikke konverteringen: forskellige typer betyder altid forskellige vrdier for den.Vrdierne
nullogundefineder specielle: de er==lige med hinanden og ikke med noget andet.Strre/mindre sammenligninger sammenligner strenge tegn for tegn, andre typer konverteres til et tal.
- Andre operatorer
-
Der er f andre, som komma-operatoren.
Mere information: Grundlggende operatorer, matematik, Sammenligning, Logiske operatorer, Nullish coalescing operator '??'.
Lkker
-
Vi har dkket 3 typer lkker:
// 1 while (betingelse) { ... } // 2 do { ... } while (betingelse); // 3 for(let i = 0; i < 10; i++) { ... } -
Variablen, der erklres i
for(let...)lkken, er kun synlig inden for lkken. Men vi kan ogs udeladeletog genbruge en eksisterende variabel. -
Direktiverne
break/continuetillader at afslutte hele lkken/den aktuelle iteration. Brug labels til at bryde ud af indlejrede lkker.
Mere information: Lkker: while og for.
Senere vil vi studere flere typer lkker til at hndtere objekter.
switch-konstruktionen
switch-konstruktionen kan erstatte flere if-kontroller. Den bruger === (streng lighed) til sammenligninger.
For eksempel:
let age = prompt('Din alder?', 18);
switch (age) {
case 18:
alert("Virker ikke"); // resultatet af prompt er en streng, ikke et tal
break;
case "18":
alert("Virker!");
break;
default:
alert("Enhver vrdi, der ikke er lig med en af ovenstende");
}
Mere information: "switch" udtryk.
Funktioner
Vi har dkket tre mder at oprette en funktion i JavaScript:
-
Funktionsdeklaration: funktionen i hovedkodeflowet
function sum(a, b) { let result = a + b; return result; } -
Funktionsudtryk: funktionen i konteksten af et udtryk
let sum = function(a, b) { let result = a + b; return result; }; -
Arrow functions (pilefunktioner):
// Udtrykket p hjre side let sum = (a, b) => a + b; // eller flersidet syntaks med { ... }, skal bruge return her: let sum = (a, b) => { // ... return a + b; } // uden argumenter - skal bruge () let sayHi = () => alert("Hej"); // med et enkelt argument let double = n => n * 2;
- Funktioner kan have lokale variabler: dem, der erklres inde i dens krop eller i dens parameterliste. Sdanne variabler er kun synlige inde i funktionen.
- Parametre kan have standardvrdier:
function sum(a = 1, b = 2) {...}. - Funktioner returnerer altid noget. Hvis der ikke er nogen
return-stning, er resultatetundefined.
Mere information: se Funktioner, Pilefunktioner (Arrow functions), grundlggende.
Der kommer mere
Ovenstende er en kort liste over JavaScript-funktioner. Indtil videre har vi kun studeret det grundlggende. Senere i vejledningen vil du finde flere specialfunktioner og og avanceret funktionalitet i JavaScript.
Kommentarer
<code>-taggen, for flere linjer - omslut dem i<pre>-tag, for mere end 10 linjer - brug en sandbox (plnkr, jsbin, codepen)