JavaScript kommandoer
Kommandoer (statements) er helt centrale i opbygningen af programmer i javaScript. De ca. 20 kommandoer af varierende vigtighed kan opdeles i følgende kategorier:
![x](/felles/ikoner/ned.gif) | Deklarationer | var, function , const | Opbygning af declarations. |
![x](/felles/ikoner/ned.gif) | Løkker | if, if...else, while, do...while, for, for...in, switch | Opbygning af loops. |
![x](/felles/ikoner/ned.gif) | Udførelses kontrol | break, continue, label, return | Break og styring af fortsættelse. |
![x](/felles/ikoner/ned.gif) | Undtagelser | throw, try ...catch, debugger | Opbygning af fejlmeddelelser |
![x](/felles/ikoner/ned.gif) | Andre | comment, import, export | Kommentarer og Import / Export |
Deklarationer
var | | var er nok både den mest anvendte og mest alsidige kommando i javaScript. Den bruges til med brugerdefinerede navne at etablere lagerplads til de data, der skal behandles i javaScript. (se nedenfor).
Med var kan der etableres 3 typer "lagringsmedier":
- variabler. Deres enkelhed betyder, at der ikke er nogen indlejring.
- Arrays. [] anvendes til indlejring.
- Objekter. {} anvendes til indlejring.
| |
(var fortsat) |
Datatyper
Javascript kan håndtere 5 (7) typer data:
- Strenge
Strenge bestående at tekst og / eller tal. Teksten kan være både store og små bogstaver. Skal indrammes af anførselstegn. Der kan ikke regnes på tal, der er anført som strenge.
- Tal
Positive og negative heltal, almindelige decimaltal og flydende decimaltal (punktum er decimaltegn). Anføres uden anførselstegn.
- Booleske værdier
Der findes kun 2 værdier: true og false .
- null
Nøgleordet null har værdien 'ingenting'. Den tildeles variabler der bruges før de er erklærede.
- Udefinerede
Variabler, der kune har fået erklæret et navn, men ingen værdi.
- Uendelig
En matematisk beregning, der resulterer i en uendelighed.
- NaN
En matematisk beregning, der ikke giver nogen mening. (NaN = Not a Number).
I nogle programmeringssprog skal man ved oprettelsen af en datalagringsident angive, hvilken type data den skal indeholde. Sådan er det ikke i javaScript. Der kan ikke angives nogen datatype, og en ident kan over tid indeholde data af forskellig type. javaScript kaldes derfor et "svagt-type" sprog.
Datalagring
Mens data ikke er i brug inde i et program kan de opbevares på 3 måder:
- Variabler
En variabel består af 3 dele: "navn = værdi". Værdien i en variabel nås ved at angive variablens navn.
- Arrays
En array består af 3 dele: "navn = (værdi1, værdi2, værdi3, ....., værdi n). Den er reelt - også erklæringsmæssigt - blot en variabel, der kan indeholde flere værdier. Dens streng af værdier er indrammet i et sæt firkantede parenteser [ ]. Alt indhold i en array vedrører normalt samme emne og i en ordnet rækkefølge. En af værdierne i en array nås ved at angive arrayens navn og nummeret på værdien. Til forskel fra almindelig rækkefølgetælling begynder rækkefølgen i en array med nummer '0'. Arrays er specielle derved, at de udover 1 dimension også kan opbygges i 2, 3 eller endnu flere dimensioner. Det gøres ved at indlejre [[]] indeni hinanden.
- Objekter
Et objekt består af 3 dele: "navn = {egenskab1, egenskab2, ... egenskabn}. Hver egenskab består af en ident og en værdi. Resultatet bliver således: "navn = {ident1:værdi1, ident2:værdi2, ..., identn:værdin}. En af værdierne i et objekt nås ved at angive objektets navn og identen for værdien. Brugerdefinerede dataobjekter i javaScript må ikke forveksles med de objekter, der er indbygget i javaScript, og slet ikke med objekter som de forekommer i "objektorienterede" programmeringssprog.
De 3 måder at lagre data på, er reelt bare 3 varianter over samme tema: navn = værdi .
Erklæring
Variabler, arrays og objekter kan hver især erklæres på forskellig måde. Her nogle eksempler:
- Variabler
var nyvar;
var pris = null;
var nypris = 10.95;
var adresse = "Blåbærstrøget 17";
var resultat = true;
var resultat = 1.08e+23;
var uendelighed = 1e300 * 1e300;
var NaN = 0/0;
- Arrays
var a = [];
var a = new Array();
var mystudents=new Array(3)
var mystudents=["John", , , "Chris"]
var myarray=[["New York", "LA", "Seattle"], China, Japan]
var myarray=[[[2,4,6]], China, Japan]
var mystudents=new Array("Bob", "Jane", "Peter", 14, 54)
var mystudents=new Array()
mystudents[0]="Bob"
mystudents[1]="Jane"
mystudents[2]="Peter"
- objekter
var obj = {};
var obj = new object();
var myObject = {
sProp: 'some string value',
numProp: 2,
bProp: false
};
var myObject = {
sProp: 'some string value',
numProp: 2,
bProp: false
};
| |
function | function doItNow() { kode }
function doThis(p1, p2, p3) { kode } | Fælles ident for brugernavngivne funktioner. En funktion består af 5 dele:
- "function"
- Brugertildelt navn.
- "()" til evt. indlejring af modtagne parametre der skal benyttes i funktionens behandling af data.
- "{}" blokkommando omkring funktionens kode.
- den blok kode der skal udføres
For evt. at få data ud af funktionen igen anvendes kommandoen return , der normalt placeres allersidst i kodeblokken.
| |
const | const width = 5 | Definition af konstant (Variabel hvis værdi ikke må ændres). Følger iøvrigt regelsættene for variabler. Ikke del af ECMA-definitionerne, men understøttes af de fleste browsere. | |
Løkker
if | if (x <=y) { thing +=x; x++; } ; | Udfører koden i en kodeblok, hvis den angivne betingelse er opfyldt. | |
if...else | if (x <=y) { thing +=x; x++; } else thing += y; | Udfører koden i den første kodeblok, hvis den angivne betingelse er opfyldt. Ellers udføres koden i den anden kodeblok. | |
while | while(y < 3) { doSomething(); } | Udfører koden i en kodeblok så længe den angivne betingelse er opfyldt. Svarer stort set til do .. while . I while opdateres betingelsen før loopet påbegyndes. | |
do...while | do statements --test; while (0 <=test); | Udfører koden i en kodeblok så længe den angivne betingelse er opfyldt. Svarer stort set til while . I do .. while opdateres betingelsen efter at loopet er udført. Det betyder, at loopet altid vil blive gennemløbet mindst 1 gang - goså hvis betingelsen er forkert. | |
for | for (var i=0; i<15; i++) { var x += i; doSomething(x); } | Udfører koden i en kodeblok så værdien af i ikke er udenfor de 2 første betingelser baseret på at værdien af i ved hvert gennemløb ændres med værdien af den 3die betingelse. | |
for...in | for (var in obj) { return obj [i]; } | for...in har 2 forskellige syntakser: 1.
var myObj = {a: 1, b: 2, c: 3}, myKeys = []; for (var property in myObj) { myKeys.push(property);} myKeys; //['a','b','c']; 2.
var myObj = {a: 1, b: 2, c: 3}, myKeys = [], i=0; for (myKeys[i++] in myObj); myKeys; //['a','b','c']; . | |
switch | switch(x) { case 0 : doSomething(); break; case 1 : doSomethingElse(); break; default : doThisInstead(); } | Udfører koden knyttet til parameter, der som "case"-værdi (tal eller streng) tilføres i switch -funktionen. | |
Udførselskontrol
break | function loopWithBreak(b) { var x = 0; while (x < 20) {if (10 == x) break; x++; }return x*b; } | Foranlediger, at et loop forlades (i utide), når en specifik situation opstår inde i kodeblokken. | |
continue | function loopWithContinue(c) {var count = 0; while (count < 16) { if (0 == (++count % 2)) continue; return count*c; } } | Inde fra kodeblokken afbrydes et gennemløb af løkken på angivne betingelser. Hovedløkken fortsættes med det næste valide loop (der også kan afbrydes). | |
label | function breakWithLabel(b) { var outer, inr = 0; myFirstLabel: while (++outer < 12) { for(inr=0; inr<12; inr++) { if(6 == outer) break myFirskLabel; return in*outer; } } } | Anvendes sammen med break og continue på en ganske kompleks måde til især fejlfinding. | |
return | function myfunction(arg1, arg2){ var r; r = arg1 * arg2; return(r); } | Anvendes i funktioner, når der skal returneres beregnede data.:
- Ved tomt parentessæt:
Data returneres til den / de variabler, der leverede data til funktionen. - Ved udfyldt parentessæt:
Data returneres til den / de anførte variabler.
| |
Undtagelser
throw | function ValidateDay(DayOfWk) { if (DayOfWk < 1 | DayOfWk >> 7) { throw "Invalid day of Week"; } } | foran indsat fejl der kan opfanges af try...catch -kommandoen. | |
try...catch...finally | function catchException() { try { throw "Errors occurred"; }catch(excptn) {alert(excptn); } finally { doSomething(); } } | Try indsættes foran foran kodeblok, der kan indeholde fejl. Catch (optionel) kode til at håndtere fejl i try-blokken. Finally (optionel) kode, der uden betingelser udføres efter overstået behandling af fejl. | |
debugger | function potentiallyBuggyCode() { debugger; } | Starter debugger, når sådan er tilkoblet. | |
Andre statements
comment | // one-line comment /* multiple-line comment of any length */ | Foran kommentarer på resten af aktuel linie, eller omkring kommentar-blok der bruger mere end aktuel linie. | |
export | export myProperty myFunction | Eksport af parametre, funktioner og objekter til import i andet JS. (Synes ikke at være med i JS-definitionerne fra ECMA). | |
import | import myObject.myProperty myObject.myFunction | Import af parametre, funktioner og objekter fra andet JS. (Synes ikke at være med i JS-definitionerne fra ECMA). | |
|