/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Fortsætte et IF-statement på ny linie?
Fra : Peter [5260]


Dato : 01-12-08 03:20

Hej,

Kan det virkelig passe, at JS ikke har et tegn a la VB's
"_" (underscore), når man vil fortsætte et statement på næste linie?
Mit problem er en lang IF-sætning, som jeg gerne vil have delt op for
at gøre den mere overskuelig...

Med VB-syntax ville statementet se ud som dette

if (a == b) && _
(c > d) && _
(e < f) {
// do something
}

Pft
Peter

 
 
John S. Thomsen (01-12-2008)
Kommentar
Fra : John S. Thomsen


Dato : 01-12-08 15:13

Peter [5260] wrote:
> Kan det virkelig passe, at JS ikke har et tegn a la VB's
> "_" (underscore), når man vil fortsætte et statement på næste linie?

I JavaScript benyttes "\" (backslash) hvis en linie ønskes fortsat
ubrudt på næste linie.

> Mit problem er en lang IF-sætning, som jeg gerne vil have delt op for
> at gøre den mere overskuelig...

Det er normalt ikke nødvendigt at bruge backslash i den forbindelse.

> Med VB-syntax ville statementet se ud som dette
>
> if (a == b) && _
> (c > d) && _
> (e < f) {
> // do something
> }

og i JavaScript kan den f.eks. se således ud:

if
(
   (a == b) &&
   (c > d) &&
   (e < f)
)
{
   // do something
}

Lasse Reichstein Nie~ (01-12-2008)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 01-12-08 19:45

"John S. Thomsen" <john.s.thomsen@gmail.com> writes:

> Peter [5260] wrote:
>> Kan det virkelig passe, at JS ikke har et tegn a la VB's
>> "_" (underscore), når man vil fortsætte et statement på næste linie?
>
> I JavaScript benyttes "\" (backslash) hvis en linie ønskes fortsat
> ubrudt på næste linie.

Det er kun nogle implementationer der bruger det til at fortsætte
en streng-literal over flere linjer, e.g.:
var s = "Dette er en lang\
streng";
(Og det er ikke med i ECMAScript-standarden).

Til at fortsætte en almindelig sætning behøver man ikke nogen tegn.
En newline er ikke en sætnings-afslutter, som den er i BASIC. I Javascript
bruger man ";" til at afslutte en sætning, så følgende er helt ok:

var x = 4 +
42 /
3;

(omend det nedsætter læsbarheden betragteligt :)

>> Mit problem er en lang IF-sætning, som jeg gerne vil have delt op for
>> at gøre den mere overskuelig...
>
> Det er normalt ikke nødvendigt at bruge backslash i den forbindelse.

Det er faktisk slet ikke tilladt. Det vil være en syntaksfejl at sætte
en backslash ind mit i en sætning eller et udtryk.

>> Med VB-syntax ville statementet se ud som dette
>> if (a == b) && _
>> (c > d) && _
>> (e < f) {
>> // do something
>> }
>
> og i JavaScript kan den f.eks. se således ud:
>
> if
> (
>    (a == b) &&
>    (c > d) &&
>    (e < f)
> )

Eller
if ((a == b) &&
(c > d) &&
(e < f)) {
// do something
}
hvis man foretrækker det mere kompakt.

/L
--
Lasse Reichstein Holst Nielsen
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

John S. Thomsen (02-12-2008)
Kommentar
Fra : John S. Thomsen


Dato : 02-12-08 00:19

Lasse Reichstein Nielsen wrote:
> "John S. Thomsen" <john.s.thomsen@gmail.com> writes:
>
>> Peter [5260] wrote:
>>> Kan det virkelig passe, at JS ikke har et tegn a la VB's
>>> "_" (underscore), når man vil fortsætte et statement på næste linie?
>> I JavaScript benyttes "\" (backslash) hvis en linie ønskes fortsat
>> ubrudt på næste linie.
>
> Det er kun nogle implementationer der bruger det til at fortsætte
> en streng-literal over flere linjer, e.g.:
> var s = "Dette er en lang\
> streng";
> (Og det er ikke med i ECMAScript-standarden).

Ja. Jeg var gal på den. Backslash kan kun bruges til at bryde
streng-literals og det er ikke med i den nuværende stabile udgave af
standarden.

Måske bliver det tilladt i fremtiden. I al fald er det tilladt at bryde
streng-literals med backslash i ECMAScript 3.1 Draft 01 DEC 2008 [1].

I en kommentar til [1] står der "4/4 browsers support this.", hvilket må
betyde, at backslash virker udmærket i FF, O, S og IE. Altså ingen grund
til ikke at bruge backslash, hvis man finder det handy.

Mit yndlingseksempel, hvor jeg bruger \, er til at remse tegnsæt op:

var alfabet = "\
abcdefghijklmnopqrstuvwxyzæøå\
ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ\
";

[1]
https://mail.mozilla.org/pipermail/es-discuss/2008-December/008230.html

Peter [5260] (02-12-2008)
Kommentar
Fra : Peter [5260]


Dato : 02-12-08 01:41

Tak til både Lasse og John for gode og gedigne svar!
/Peter

On 1 Dec., 19:45, Lasse Reichstein Nielsen <lrn.unr...@gmail.com>
wrote:
> "John S. Thomsen" <john.s.thom...@gmail.com> writes:
>
> > Peter [5260] wrote:
> >> Kan det virkelig passe, at JS ikke har et tegn a la VB's
> >> "_" (underscore), når man vil fortsætte et statement på næste linie?
>
> > I JavaScript benyttes "\" (backslash) hvis en linie ønskes fortsat
> > ubrudt på næste linie.
>
> Det er kun nogle implementationer der bruger det til at fortsætte
> en streng-literal over flere linjer, e.g.:
>  var s = "Dette er en lang\
>  streng";
> (Og det er ikke med i ECMAScript-standarden).
>
> Til at fortsætte en almindelig sætning behøver man ikke nogen tegn.
> En newline er ikke en sætnings-afslutter, som den er i BASIC. I Javascript
> bruger man ";" til at afslutte en sætning, så følgende er helt ok:
>
>  var x = 4 +
>   42 /
>   3;
>
> (omend det nedsætter læsbarheden betragteligt :)
>
> >> Mit problem er en lang IF-sætning, som jeg gerne vil have delt op for
> >> at gøre den mere overskuelig...
>
> > Det er normalt ikke nødvendigt at bruge backslash i den forbindelse.
>
> Det er faktisk slet ikke tilladt. Det vil være en syntaksfejl at sætte
> en backslash ind mit i en sætning eller et udtryk.
>
> >> Med VB-syntax ville statementet se ud som dette
> >> if (a == b) && _
> >>   (c > d) && _
> >>   (e < f) {
> >>   // do something
> >> }
>
> > og i JavaScript kan den f.eks. se således ud:
>
> > if
> > (
> >    (a == b) &&
> >    (c > d) &&
> >    (e < f)
> > )
>
> Eller
>  if ((a == b) &&
>      (c > d) &&
>      (e < f)) {
>    // do something
>  }
> hvis man foretrækker det mere kompakt.
>
> /L
> --
> Lasse Reichstein Holst Nielsen
>  DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
>   'Faith without judgement merely degrades the spirit divine.'


Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste