Citat:
Originally posted by Onkelborg@Jan 10 2009, 00:36
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
});
|
Jaha.. det där har jag ju sett tillämpas men inte tillämpat själv mer än vid vissa ajax-anrop. Jag skall använda det mer flitigt.
Tack för tipset.