- Mindenki mosolyog a OnePlus 15T tesztfotóin
- Xiaomi 17 Ultra - jó az optikája
- Xiaomi 17 - még mindig tart
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Nothing Phone 2a - semmi nem drága
- Külföldi prepaid SIM-ek itthon
- Jolla és SailfishOS tapasztalatcsere
- Dobja a kapszulát és 8000 mAh fölé lő a Honor kompaktja
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Így nyeri az Oppo a zoomcsatát
-
Mobilarena
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
Jim-Y
veterán
Na, akkor legalább volt értelme a példának.
Ezt írja a konzolra:
Vagyis
10
10
10
10
10Magyarázat: (ha esetleg valamit rosszul írnék, akkor javítsatok ki többiek, nem szeretném ha valamit az én hibámból jegyezne meg rosszul

1:
for (var i = 1; i < 6; ++i) {
//...
}Ezt az interpreter így értelmezi:
var i = undefined;
for(i = 1; i < 6; ++i) {
//...
}Tehát az i ciklusváltozót felemeli a függvény törzsének elejére, majd undefined-ként deklarálja.
2:
cont.addEventListener('click', function () {
console.log(i);
});Minden click eseményre a cont objektumon/elementen regisztrál egy névtelen függvényt. A lényeges momentum, hogy minden függvény javascriptben látja/tartalmazza az őt körülvevő függvények kontextusát.
function a() {
var i = 10;
function b() {
var j = function() { return 11; };
function c() {
console.log(i); // 10
console.log(j()); //11
}
c();
}
b();
}
a();Az eredeti példánál maradva az anonim függvény látja az őt körülvevő test függvény kontextusát, így az i változót is. Az addEventListener függvényel olyan működést definiálunk, ami valamikor a jövőben fog lezajlani (amikor klikkelünk az elemre), ezért a ciklus már rég végez mire mi az elemre klikkelünk.
3:
amikor végül rányomunk a div-re, az i már a ciklus végén 6, majd egy újabb értékadással i = 10. Ne felejtsük, hogy az összes anonim függvény "cipeli" magával a test függvény kontextusát amiben az i változóhoz már a 10 érték van rendelve, ezért fog 5 x 10-et kiírni a program a konzolra.A megoldás az lehet, ha minden anonim függvénynek/hez egy új kontextus-t rendelünk, amiben az i változó a ciklusban éppen aktuális értéken fog szerepelni.
Példa és megoldás:
var cont = document.querySelector('#container');
function test() {
for (var i = 1; i < 6; ++i) {
(function (i) {
cont.addEventListener('click', function () {
console.log(i);
});
}(i));
}
i = 10;
}
test();A (function() { .. }()); egy új kontextust generál amibe elmentjük az i ciklusváltozó aktuális értékét így az mindig fix marad.
üdv
Új hozzászólás Aktív témák
- Luck Dragon: MárkaLánc
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Luck Dragon: Asszociációs játék. :)
- Okos otthon - Home Assistant, openHAB és más nyílt rendszerek
- Forradalomi előrelépésként jellemzi az NVIDIA a DLSS 5-öt
- TCL LCD és LED TV-k
- Soundbar, soundplate, hangprojektor
- sziku69: Fűzzük össze a szavakat :)
- Lexus, Toyota topik
- További aktív témák...
- Nintendo Switch Lite eladó!
- AudioQuest JitterBug FMJ + Furutech GT2 NCF USB-B kábel + iFi iPurifier3 USB-B +ddHifi USB-C adapter
- HP EliteDesk 800 90W G3 Desktop Mini számítógép
- LG UltraGear 27GR75Q-B 2K/IPS/165HZ (086)
- !!GARIS 2027.09.11!! ASUS TUF FA507 R5 7535HS/16 GB DDR5/1.5 TB M2 SSD/RTX 4050 6 GB
- Apple iPhone 14 Pro 128GB,Újszerű,Dobozaval,12 hónap garanciával
- Hp ProDesk/ EliteDesk SFF/MT G4/ G5/ G6 / i5 8-9-10.gen /Win11- Számla, garancia
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RTX 5060Ti 16GB GAMER PC termékbeszámítással
- Lenovo ThinkPad dokkolók: USB-C 40A9/ 40AY/ 40AS/ Thunderbolt 3 40AC/ Hybrid USB-C DisplayLink 40AF
- HIBÁTLAN iPhone 15 128GB Pink-1 ÉV GARANCIA - Kártyafüggetlen, MS4635
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



