Hirdetés
- Samsung Galaxy S23 Ultra - non plus ultra
- Google Pixel 9 Pro XL - hét szűk esztendő
- Kecses és filléres Apple Watch klón a Redmitől
- iPhone topik
- Xiaomi 15T Pro - a téma nincs lezárva
- Samsung Galaxy Watch4 és Watch4 Classic - próbawearzió
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Fotók, videók mobillal
- Windows 10 Mobile (Windows Phone) szakmai topik
- Apple Watch Sport - ez is csak egy okosóra
-
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
- Samsung Galaxy S23 Ultra - non plus ultra
- eBay-es kütyük kis pénzért
- Házimozi haladó szinten
- Parfüm topik
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Debrecen és környéke adok-veszek-beszélgetek
- LEGO klub
- PlayStation 5 nélkül kínál PlayStation 5 játékokat a Sony
- Milyen TV-t vegyek?
- Garancia kérdés, fogyasztóvédelem
- További aktív témák...
- T14s Gen4 14" FHD+ IPS Ryzen 7 PRO 7840U 32GB 512GB NVMe magyar vbill ujjlolv IR kam gar
- Samsung Galaxy S23 Ultra 256Gb Zöld, jó akkumulátor
- MSI Cyborg 15 A13VF 15.6" FHD IPS i7-13620H RTX 4060 16GB 512GB NVMe gar
- X1 Carbon 11th 14" FHD+ IPS i5-1345U 32GB 512GB NVMe magyar vbill ujjolv IR kam gar
- új Sony PlayStation 5 Slim 1 TB + DualSense kontroller
- ÁRGARANCIA!Épített KomPhone i5 13400F 16/32/64GB RAM RX 9060 XT 8GB GAMER PC termékbeszámítással
- Minis Forum Mini PC MS-A2 Ryzen 9955HX RAM és SSD nélkül 1 év garanciával
- HIBÁTLAN iPhone 12 Mini 128GB Black-1 ÉV GARANCIA - Kártyafüggetlen,MS3634,100% Akkumulátor
- GYÖNYÖRŰ iPhone 12 mini 128GB Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS3327, 94% Akkumulátor
- HIBÁTLAN iPhone 13 mini 128GB Starlight -1 ÉV GARANCIA - Kártyafüggetlen, MS3288
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő



