Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 3 van 3

Onderwerp: Aanroepen van een functie met anonieme functies als parameters

  • Vraag is niet opgelost
  1. #1

    Aanroepen van een functie met anonieme functies als parameters

    Beste lezers,

    Op dit moment ben ik bezig om te leren werken met anonieme functies. Ik heb het volgende simpele voorbeeldje:

    Code:
    function invoke_and_add(function(){return 1;}, function(){return 2;})    {
        return arguments[0]+arguments[1];
    }
    invoke_and_add();
    Het is de bedoeling dat deze functie de return value van de eerste anonieme functie (eerste argument) optelt bij de return value van anonieme functie 2 (tweede argument).

    De vraag is nu: hoe roep ik de functie invoke_and_add() op een juiste manier aan. Omdat deze functie bij z'n definitie twee anonieme functies als parameters heeft die in dit geval beide hard coded return values hebben (1 en 2), is dit voor mij niet duidelijk. Een normale functie roep je namelijk aan via functieNaam(arg1, arg2, arg3, enz.). Hoe werkt dat bij een functie als deze?

    Groet,

    Anton

  2. #2
    Een normale functie roep je namelijk aan via functieNaam(arg1, arg2, arg3, enz.)
    Klopt Houd daarbij in gedachten dat arg1, arg2, etc. ook expressies kunnen zijn. Tot expressies behoren ook anonieme functies.

    Het voorbeeld dat je geeft is syntactisch niet helemaal correct. Een functie definieer je zo:
    Javascript Code:
    1
    2
    3
    
    function name(param1, param2, etc) {
        //Function body
    }
    Let op: param1, param2, etc. zijn hier geen expressies, maar identifiers ('variabelen').

    Er is dus een verschil in functieaanroep en functiedefinitie De eerste heeft expressies tussen de haakjes, de tweede heeft identifiers.

    Een herschrijving van je programma kan er zo uit zien:
    Javascript Code:
    1
    2
    3
    4
    5
    6
    7
    
    function invoke_and_add(f1, f2)    {
        return arguments[0]() + arguments[1](); //Let op de haakjes: arguments[0] is een functie, en met 'arguments[0]()' roep je die functie aan.
     
        //Hierboven is hetzelfde als
        return f1() + f2();
    }
    invoke_and_add(function() {return 1;}, function() {return 2}); //Roep de gedefinieerde functie aan, en geef twee expressies (hier anonieme functies) mee.
    Laatst aangepast door Robin S : 13 juni 2012 om 17:09

  3. #3

    Dank voor je uitleg!

    Beste Robin S,

    Dank voor je heldere uitleg! Het voorbeeldje wat ik gaf was afkomstig uit een Engelstalig boek over JavaScript. Dat maakte het een beetje moeilijk voor mij. Met jouw Nederlandstalige uitleg begrijp ik het.

    Groet,

    Anton

Berichtenregels

  • U mag geen nieuwe discussies starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • Umag niet uw berichten bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren
Linkpartners
Aanbiedingen