Visa ett inlägg
Oläst 2009-01-10, 06:12 #9
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
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.
oddholst är inte uppkopplad   Svara med citatSvara med citat