[JS] return (...if...) syntax

Pagina: 1
Acties:

  • kross
  • Registratie: Juli 2000
  • Niet online
Hoi,

Ik probeer al een tijdje de volgende syntax aan de praat te krijgen:

function functieA(form) {
return (checkString(form.elements["strNaam1"]) &&
checkString(form.elements["strNaam2"]) &&
checkString(form.elements["strNaam3"]) &&
if (!Empty(document.frmAanvraag.strBezoekStraat)) {
checkHuisnr(form.elements["strHuisnummer"]) &&
checkString(form.elements["strToevoeging"]) &&
} &&
checkTelefoonnummer(form.elements["strTelefoon"]))
}

(let even niet op de inhoud het gaat me namelijk om de syntax)

Maar bij het debuggen krijg ik de melding dat die IF niet klopt (syntax fout).

Mijn vraag: Hoe kan ik een if statement in een return(..if{}..) bouwen?

http://developer.netscape.com/docs/manuals/js/core/jsref15/stmt.html#1004871 (hier heb ik wel wat basic dingen gevonden)

http://developer.netscape.com/docs/examples/javascript/regexp/Intlform.html (kijk hier in de source daar staat een voorbeeld)

thanx.
kross

P.S. ik zie dat sommigen hier heel netjes code in een bericht kunnen plaatsen hoe doe ik dit?

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 14:31

RM-rf

1 2 3 4 5 7 6 8 9

de 'return' is de terugstuurwaarde: en dient dus de 'eind-waarde te genereren, een if-statement die hierna komt wordt niet meer uitgevoerd.

waarschijnlijk heb je de empty-check van strBezoekstraat toegvoegd, dat hij strHuisnummer enkel checked als strBezoekStraat ingevuld is, dit kan je echter beter met een || (OR) statement doen (strBezoekStraat is Empty óf strHuisnummer is ingevuld)
code:
1
2
3
4
5
6
7
8
9
function functieA(form) {
   return (checkString(form.elements["strNaam1"]) &&
    checkString(form.elements["strNaam2"]) &&
    checkString(form.elements["strNaam3"]) &&
    (Empty(form.elements.["strBezoekStraat"]) ||
       (checkHuisnr(form.elements["strHuisnummer"]) &&
        checkString(form.elements["strToevoeging"]))) &&
    checkTelefoonnummer(form.elements["strTelefoon"]))
}

(heb eventjes ook je methode om strBezoekstraat aan te spreken gelijk gezet aan je manier van aanspreken van de andere elementen)

bovendien stond er bij 'checkString(form.elements["strToevoeging"]) &&' een && teveel (voor afsluitende }-bracket)

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

kross:
(let even niet op de inhoud het gaat me namelijk om de syntax)
hmm
Maar bij het debuggen krijg ik de melding dat die IF niet klopt (syntax fout).
Logisch. Mag niet.
Mijn vraag: Hoe kan ik een if statement in een return(..if{}..) bouwen?
En hier geef je dus precies de reden aan waarom het niet kan. Een return-statement en een if-statement. Leg mij eens uit wat je gedachten zijn over een statement binnen een statement :? ;)

Een if statement binnen een expressie, daarbij komt de : ? constructie om de hoek kijken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
a = b ? c : d;
// is het zelfde als:
if ( b )
   a = c; 
else
   a = d;
// dus:

a = b ? c : d;
    ^ ^ ^
    | | Anders expressie "d"
    | zo ja, evalueer dan expressie "c"
    is de expressie "b" waar ?

// en je kunt het zo ingewikkeld maken als je zelf wilt:
a = b ? c ? d : q ? e : f : g;


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function functieA(form) 
{
   return 
   (
    checkString(form.elements["strNaam1"]) &&
    checkString(form.elements["strNaam2"]) &&
    checkString(form.elements["strNaam3"]) &&
    checkTelefoonnummer(form.elements["strTelefoon"]) &&
    (
      !Empty(document.frmAanvraag.strBezoekStraat) 
      ? ( 
        checkHuisnr(form.elements["strHuisnummer"]) &&
        checkString(form.elements["strToevoeging"])
      )
      : (
        true
      )
    )
   );

Maar dit soort constructies raad ik je ten zeerste af. Die zijn ingewikkeld, foutgevoelig en moeilijk leesbaar (kan ook een goede reden zijn)

Dan kun je beter gewoon het if statement eruit lichten:
code:
1
2
3
4
if ( a )
   return a;
else if ( b )
   return b;
thanx.
kross
Geen dank. Lees ook even de FAQ van de aparte fora voor je erin post. Je naam onder je posts zetten is redelijk overbodig :)
P.S. ik zie dat sommigen hier heel netjes code in een bericht kunnen plaatsen hoe doe ik dit?
gebruik [ code] en [ /code] tags (zie ook de FAQ)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • kross
  • Registratie: Juli 2000
  • Niet online
Lees ook even de FAQ van de aparte fora voor je erin post. Je naam onder je posts zetten is redelijk overbodig :)
Heb ik gelijk maar even gedaan :), hmm, ja techneuten hé, gelijk posten en niet lezen...

Verder bedankt voor de IF uitleg in combinatie met 'Return', ik vond daarover alleen 'droge' en erg korte uitleg.

Ik ga trouwens voor deze oplossing:
code:
1
2
3
4
5
6
7
8
9
function functieA(form) {
   return (checkString(form.elements["strNaam1"]) &&
    checkString(form.elements["strNaam2"]) &&
    checkString(form.elements["strNaam3"]) &&
    (Empty(form.elements.["strBezoekStraat"]) ||
       (checkHuisnr(form.elements["strHuisnummer"]) &&
        checkString(form.elements["strToevoeging"]))) &&
    checkTelefoonnummer(form.elements["strTelefoon"]))
}

Ik zet er duidelijk commentaar bij, dus dat zal de leesbaarheid ten goede komen.