javascript 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:


xDeklarationervar, function, constOpbygning af declarations.
xLøkkerif, if...else, while, do...while, for, for...in, switchOpbygning af loops.
xUdførelses kontrolbreak, continue, label, returnBreak og styring af fortsættelse.
xUndtagelserthrow, try ...catch, debugger Opbygning af fejlmeddelelser
xAndrecomment, import, exportKommentarer 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":
  1. variabler. Deres enkelhed betyder, at der ikke er nogen indlejring.
  2. Arrays. [] anvendes til indlejring.
  3. 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
    };
 
functionfunction doItNow()
{
kode
}

function doThis(p1, p2, p3)
{
kode
}
Fælles ident for brugernavngivne funktioner. En funktion består af 5 dele:
  1. "function"
  2. Brugertildelt navn.
  3. "()" til evt. indlejring af modtagne parametre der skal benyttes i funktionens behandling af data.
  4. "{}" blokkommando omkring funktionens kode.
  5. 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.
 
constconst width = 5Definition 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


ifif (x <=y)
{
thing +=x; x++;
}
;
Udfører koden i en kodeblok, hvis den angivne betingelse er opfyldt. 
if...elseif (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. 
whilewhile(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...whiledo
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. 
forfor (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...infor (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'];

.
 
switchswitch(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


breakfunction
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.
continuefunction
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).
labelfunction 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.
returnfunction 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


throwfunction ValidateDay(DayOfWk)
{
if (DayOfWk < 1 | DayOfWk >> 7)
{
throw "Invalid day of Week";
}
}
foran indsat fejl der kan opfanges af try...catch-kommandoen. 
try...catch...finallyfunction 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. 
debuggerfunction 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. 
exportexport myProperty
myFunction
Eksport af parametre, funktioner og objekter til import i andet JS. (Synes ikke at være med i JS-definitionerne fra ECMA). 
importimport
myObject.myProperty
myObject.myFunction
Import af parametre, funktioner og objekter fra andet JS. (Synes ikke at være med i JS-definitionerne fra ECMA). 




















x
x