Visa ett inlägg
Oläst 2009-01-09, 23:36 #8
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Onkelborg Onkelborg är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2007
Inlägg: 382
Rent generellt:

När du deklarerar en funktion:
function foo()
{
alert('kaka');
}

så är det bara en kortform av:
var foo = function()
{
alert('kaka');
}

Grejjen är alltså att du deklarerar en variabel innehållandes en pekare till en funktion. Du skulle alltså senare i koden kunna skriva:
var bar = foo;
för att på så sätt låta även variabeln bar peka på samma funktion.

Med det i bagaget så går vi vidare:

Om vi har följande funktioner:
var foo = function()
{
alert('kaka');
}
var anrop = function(funk)
{
//här gör vi någonting spännande som tar ett tag, t.ex. ett AJAX-anrop
//nu är det dags att anropa vår funktion "funk":
funk(); //funk == referens till funktionen, funk() == exekvera funktionen och få resultatet av den
}

Vi vill nu anropa funktionen "anrop" med funktionen "foo" som argument:
anrop(foo);

Om vi vill slippa att deklarera funktionen "foo" så kan man dock skippa det steget genom att sätta själva funktionsdeklarationen som argument istället för en variabel som innehåller funktionen:
var anrop = function(funk)
{
//här gör vi någonting spännande som tar ett tag, t.ex. ett AJAX-anrop
//nu är det dags att anropa vår funktion "funk":
funk();
}
anrop(function() //det här är alltså anropet
{
alert('kaka');
});

Det finns många saker som är bra med det här, men som exempel så skulle jag kunna ta den kod du skrev ifrån början här i tråden:

fMinPrompt("Hur många kaffekoppar dricker du per dag?",
function(sSvar)
{
// Kod för vidarebehandling av svar
},
function()
{
// Kod för vidarebehandling om användaren avbröt frågerutan
});
Onkelborg är inte uppkopplad   Svara med citatSvara med citat