Elmagyarázná valaki a következő loop végeredményét? (JavaScript)
let total = 24;
for (let number = 1; number <= (total - (total % 2) / 2); number++) {
total = total - number;
console.log(total + " " + number);
}
a konzolra a következő kerül ki:
23 1
21 2
18 3
14 4
9 5
3 6
De miért?
És: total - (total % 2) / 2 — ez miért 24?
Total % 2 = 0, nem?
Akkor (total - (total % 2) / 2); az miért nem = 0 ?
Köszönöm, ha valaki türelmesen elmagyarázza.
Ha total = 24, akkor:
24 % 2 = 0
(24 % 2) / 2 = 0 / 2 = 0
24 - (24 % 2) / 2 = 24 - 0 / 2 = 24 - 0 = 24
Lásd: precedencia-szabályok:
A JS minden iteráció előtt kiértékeli a kifejezést, tehát total aktuális értékével (24, 23, 21 stb.) számol. 9-es total és 5-ös number esetén még igaz lesz a kifejezés, 3 és 6 esetén pedig már nem.
Ez egyébként egy nagyon-nagyon rossz példa, a for ciklusban szereplő kifejezések elemeit (itt total) ne módosítsd a ciklusmagban! Átláthatatlan a kód, megjósolhatatlan a leállási feltétel és könnyen juthatsz végtelen ciklushoz is.
Mert a number <= total - (tolal % 2) / 2 feltétel már nem lesz igaz.
Viszont nem tudom ez az elcseszett sz .rtalcsika kód honnan van, de nagyon sürgősen felejtsd el. Olvashatatlan, a változók elnevezése nem informatív, a számítás nem tudod mit csinál; karbantarthatatlan: a ciklus leállási feltétele változik, ráadásul a cikluson belülről, szóval fingod nincs mikor áll le hacsak nem futtatod. 4 soros kódból mind a 4-ben látok kivetnivalót, ami azért már durva.
Koszi a segítséget mindenkinek !
Forrás: [link]
Alap js dolgokat szeretnék gyakorolni, azért kerestem ilyesmit. De ha tudtok jobb forrást, megköszönöm, ha linkeltek valamit!
További kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!