Autor | Zpráva | ||
---|---|---|---|
T0MÁŠ Profil * |
#1 · Zasláno: 29. 5. 2007, 14:38:44
Dobrý den, jak zajistit aby se sem předala hodnota proměnné a ne její odkaz. Tento kód vypisuje 2 2, na místo 1 0, které bych potřeboval.
var arr = new Array('a','a'); for (var i = 0; i < arr.length; i++) { setTimeout(function() { alert('a' + i); // at vypisuje 0, 1 }, 1000); } V Javě bych si prostě udělal wrapper new Integer(i) a poslal ho do té funkce, takhle nevím díky |
||
ah01 Profil |
#2 · Zasláno: 29. 5. 2007, 15:00:30
var arr = new Array('a','a'); |
||
T0MÁŠ Profil * |
#3 · Zasláno: 29. 5. 2007, 15:25:20
Pěkně děkuji, to je přesně ono, funguje to. Co je ta prosím konstrukce
()() nechápu to? |
||
zero0x Profil |
#4 · Zasláno: 29. 5. 2007, 15:29:02
toto je definicia funkcie:
function() {} mozes ju ulozit do premennej.. fn = function(){} ..a potom zavolat: fn() alebo ju mozes zavolat priamo function(){}() ale to by zrejme nefungovalo, takze musis dat (function (){})() to znamena ze zavolas funkciu function(){}, ktora je akurat ohranicena zatvorkami |
||
zero0x Profil |
#5 · Zasláno: 29. 5. 2007, 15:51:36
btw nefungovalo ti to preto, lebo po sekunde bola hodnota i uz 2.
|
||
sakalik Profil |
#6 · Zasláno: 29. 5. 2007, 17:17:07
je mozne ze by to slo s local aj bez function len ju treba deklarovat vo for cykle
|
||
ah01 Profil |
#7 · Zasláno: 29. 5. 2007, 20:53:46 · Upravil/a: ah01
sakalik
Ne, to v JS neni možné. Využívá se zde vlastnosti funkcí zvané closuer (pokud prahnete po detajlech: http://en.wikipedia.org/wiki/Closure_%28computer_science%29 ) |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0