Avatar billede jakwag Nybegynder
22. april 2003 - 11:40 Der er 7 kommentarer og
1 løsning

semikolon efter "for" loop

Hej

Er der nogen der kan give mig en fornuftig forklaring på dette:

Hvorfor skal der ikke være et semikolon efter den afsluttende klamme i et "for" loop?

Dette er rigtigt:

for(i=0;i<3;i++){
  trace(i);
}

Dette er forkert:

for(i=0;i<3;i++){
  trace(i);
};

Hvorfor? (begge loops virker, men det er ikke korrekt at skrive ;'en)


: ) Jakob
Avatar billede barklund Nybegynder
22. april 2003 - 11:51 #1
Der skal aldrig være ";" efter en afslutte tuborg i programmering. Der er dog den ene undtagelse i Flash, at "inline" funktioner kan have det, da de faktisk bare er en variabel-tildeling:

var func = function(a) { return a+1;};

Eller:

func = function (a) {
    return a+1;
};

Men det er også den eneste undtagelse - og her kan de udelades, da semikolon altid kan udelades efter udtryk i flash:

a = 1;
b = 2;

Er lige så godt som:

a = 1
b = 2

Eller:

a = 1; b = 2

/Barklund
Avatar billede dengalepose.dk Nybegynder
22. april 2003 - 11:53 #2
Jeg tror Tuborgklammen lukker loopet helt, så }; er bare dobbeltkonfekt...

DGP
Avatar billede barklund Nybegynder
22. april 2003 - 11:54 #3
Se på det som "udtryk". Parseren splitter det hele op i udtryk, og kommer den til "for", så tager den fra førstkommende "{" til den matchende "}" og laver det til et "udtryk", der igen skal parses.

Havde du skrevet et semikolon efter, så havde de været som at skrive:

a = 1;;

Det ekstra semikolon angiver et tomt "udtryk" - det har altså ingen effekt.
Avatar billede jakwag Nybegynder
22. april 2003 - 12:17 #4
jeg har fanget jeres point.

- men hvorfor skal der så være det efter funktioner. F.eks. onRelease funktioner?
Avatar billede barklund Nybegynder
22. april 2003 - 13:01 #5
Som jeg skrev: Hvis funktionen defineres på den specielle måde, som ECMA-262-standarden tillader, hvor det, at være en funktion, faktisk bare er en speciel type variabel:

_root.onRelease = function() {
    trace("klik");
};

Men man kan også:

function minOnRelease() {
    trace("klik");
}
_root.onRelease = minOnRelease;

Og så er der ikke længere noget ";"...
Avatar billede jakwag Nybegynder
22. april 2003 - 13:03 #6
Kanon. Nu forstår jeg bedre.
Tak for hjælpen, kom med et svar.
Avatar billede barklund Nybegynder
22. april 2003 - 13:10 #7
Et svar :)
Avatar billede barklund Nybegynder
22. april 2003 - 13:19 #8
Tark for point...

Er det noget, som jeg har bare en smule forstand på, så burde det være parsing, syntax og semantik - det er trods alt en stor del af mit studie :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester