Autor | Zpráva | ||
---|---|---|---|
simonik Profil * |
Může mi někdo, prosím, vysvětlit, jak toto pracuje?
Jak se tam dostane parametr postsSuffix? Díky function example5() { var myFnct = getFunctionExample5("Just kidding."); //can you see? getFunctionExample5 method scope is closed now //but we can still access local variable name of that scope via closure //in example we are mixing even method parameters myFnct("No, no - I am serious."); } function getFunctionExample5(suffix) { var name = "Father Fourah"; return function(postSuffix) {alert(name + " rulez!\n" + suffix + "\n" + postSuffix)}; } Moderátor Str4wberry: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
_es Profil |
#2 · Zasláno: 31. 5. 2010, 14:02:41
simonik:
„Jak se tam dostane parametr postsSuffix?“ Funkcia getFunctionExample5 vracia funkciu s jedným vstupným argumentom nazvaným postSuffix , ktorý je v tej funkcii jeden krát použitý.
|
||
simonik Profil * |
#3 · Zasláno: 1. 6. 2010, 08:56:23
_es:
Diky. Snažím se pochopit closure. Našel jsem tu v diskusi ještě tento kod : for(var i=0; stylNameArray.length>i; i++) { (function(){ var n = i; neco[i].onclick = function() { zmenaStylu("styl_pozadi_oken_0" + n); } })(); } Nejde fungování closure nějak lidsky popsat? |
||
_es Profil |
#4 · Zasláno: 1. 6. 2010, 09:24:23
simonik:
„Nejde fungování closure nějak lidsky popsat?“ Používa sa aj český názov "lexikální uzávěr". Skús si o tom niečo pohľadať. Niektoré "ľudské" popisy to však skôr popíšu tak, že to ešte viac domotajú. Jednoducho povedané, ide o využitie vlastností vnorených funkcii. Tie majú prístup k premenným funkcie, do ktorej sú vnorené. Ak funkcia už skončí, no tá vnorená funkcia ešte existuje, tak aj tie premenné ďalej existujú. Jednoduchá ukážka: var f = (function(){ var n = 0; return function(){return n++; }; })(); f a tak isto existuje ďalej aj premenná n .
Preto bude volanie funkcie f vracať postupne hodnoty: 0, 1, 2, ...
|
||
Časová prodleva: 14 let
|
0