let ๊ณผ var์ ์ฐจ์ด
let
for(let i =0; i<winBalls.length; i++){
setTimeout(()=>{
console.log(winBalls[i], i);
addBall(winBalls[i] ,$result);
}, (i+1)*1000);
}
var
for(var i =0; i<winBalls.length; i++){
setTimeout(()=>{
console.log(winBalls[i], i);
addBall(winBalls[i] ,$result);
}, (i+1)*1000);
}
๐var๋ ํจ์ ์ค์ฝํ, let์ ๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ค
a๋ ํจ์ ์์ ์ ์ธ๋ ๋ณ์์ด๋ฏ๋ก ํจ์ ๋ฐ๊นฅ์์๋ ์ ๊ทผํ ์ ์๋ค
ํจ์๋ฅผ ๊ฒฝ๊ณ๋ก ์ ๊ทผ ์ฌ๋ถ๊ฐ ๋ฌ๋ผ์ง๋ ๊ฒ์ด ํจ์ ์ค์ฝํ
var๋ ํจ์ ์ค์ฝํ(ํจ์๋ง ์ ๊ฒฝ ์)๋ผ์ if ๋ฌธ ์์ ๋ค์ด ์์ผ๋ฉด ๋ฐ๊นฅ์์ ์ ๊ทผํ ์ ์๋ค
ํ์ง๋ง, let์ ๊ทธ๋ ์ง ์๋ค
let์ด ๋ธ๋ก ์ค์ฝํ(๋ธ๋ก์ ์ ๊ฒฝ ์)๋ผ์ ๊ทธ๋ ๋ค. ๋ธ๋ก์ if ๋ฌธ, for ๋ฌธ, while ๋ฌธ, ํจ์์์ ๋ณผ ์ ์๋ {}๋ฅผ ์๋ฏธํ๋ค.
๋ธ๋ก ๋ฐ๊นฅ์์๋ ๋ธ๋ก ์์ ์๋ let์ ์ ๊ทผํ ์ ์์! const๋ let๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ธ๋ก ์ค์ฝํ
for (var i = 0; i < winBalls.length; i++) {
setTimeout( () => {
console.log(winBalls[i], i);
drawBall(winBalls[i], $result);
}, 1000 * (i + 1));
}
๋ณด๋ผ์ i์ ์ฐ๋์ i ๋ ๊ฐ๊ฐ ๋ค๋ฅธ ์์ ์ ์คํ ๋๋ค
1000 * (i + 1)๋ for๋ฌธ์ ๋ ๋ ์คํ ๋๊ณ
setTimeout์ ์ฝ๋ฐฑํจ์๋ ์ง์ ์๊ฐ ๋ค์ ํธ์ถ ๋๋ค. for๋ฌธ์ด ๋นจ๋ฆฌ ๋์์ ์ฝ๋ฐฑํจ์๊ฐ ์คํ๋ ๋๋ ์ด๋ฏธ i๊ฐ 6์ด ๋์ด ์์
<var์ผ ๋ ์คํ ์์>
i๊ฐ 0์ผ ๋ setTimeout(์ฝ๋ฐฑ0, 1000) ์คํ
i๊ฐ 1์ผ ๋ setTimeout(์ฝ๋ฐฑ1, 2000) ์คํ
i๊ฐ 2์ผ ๋ setTimeout(์ฝ๋ฐฑ2, 3000) ์คํ
i๊ฐ 3์ผ ๋ setTimeout(์ฝ๋ฐฑ3, 4000) ์คํ
i๊ฐ 4์ผ ๋ setTimeout(์ฝ๋ฐฑ4, 5000) ์คํ
i๊ฐ 5์ผ ๋ setTimeout(์ฝ๋ฐฑ5, 6000) ์คํ
i๊ฐ 6์ด ๋จ
1์ด ํ ์ฝ๋ฐฑ0 ์คํ(i๋ 6)
2์ด ํ ์ฝ๋ฐฑ1 ์คํ(i๋ 6)
3์ด ํ ์ฝ๋ฐฑ2 ์คํ(i๋ 6)
4์ด ํ ์ฝ๋ฐฑ3 ์คํ(i๋ 6)
5์ด ํ ์ฝ๋ฐฑ4 ์คํ(i๋ 6)
6์ด ํ ์ฝ๋ฐฑ5 ์คํ(i๋ 6)
์ฝ๋ฐฑ ํจ์๊ฐ ์คํ๋ ๋ i๋ฅผ ์ฝ์๋ก ์ถ๋ ฅํ๋ฉด 6์ด ๋์ด
winBalls๋ ์ธ๋ฑ์ค๊ฐ 5๊น์ง๋ฐ์ ์์ผ๋ฏ๋ก winBalls[6]์ undefined๊ฐ ๋์จ๋ค
let์ ๋ธ๋ก ๋ด๋ถ์ i์ ๊ณ ์ ์ด ๋๋ค
var๋ ๋ธ๋ก ์์์ ๊ณ ์ ๋์ง ์์
๊ทธ๋ ๋ค๋ฉด, let์ผ๋ก ์ผ์ ๋ ์ ์๋ํ๋ ์์ ์ฝ๋๋ฅผ var๋ก ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํ ๊น?
//ํจ์๋ฅผ ๋ฐ๋ก ํธ์ถํ๋ ๋ฐฉ๋ฒ ํจ์๋ฅผ ์๊ดํธ๋ก ๊ฐ์ธ๊ณ ํธ์ถ
(function(j){
setTimeout(()=>{
console.log(winBalls[j], j);
addBall(winBalls[i] ,$result);
}, (i+1)*1000);
})(i);
์ด ๋ ๋ค์ด๊ฐ j ๋ ๋งค๊ฐ๋ณ์์ธ๋ฐ, ํจ์์์ ๊ฐํ๋ค
j๋ ๊ทธ ๋ ๊ทธ ๋ ๋ฐ์์ค๋ i๊ฐ ๋๋ค
'Dev. > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธ๊ฐ JS ๋๊ธฐ] promise, async/await (0) | 2023.08.06 |
---|---|
[๋ ์ธ ๊ธฐ๋ฆฟJS] ๋ก๋ ์ถ์ฒจ๊ธฐ (0) | 2023.07.17 |
[๋ ธ๋ง๋์ฝ๋] ๋ฐ๋๋ผJS๋ก ๊ทธ๋ฆผ์ฑ ๋ง๋ค๊ธฐ #01 (0) | 2023.07.01 |
[๋ ์ธ ๊ธฐ๋ฆฟ] ์ซ์์ผ๊ตฌ ๊ฒ์ ๋ง๋ค๊ธฐ (๋ฐ๋ณต๋ฌธ ์ฌ์ฉํ๊ธฐ) (0) | 2023.05.14 |
[๋ ์ธ ๊ธฐ๋ฆฟJS] ์ค์ฒฉif๋ฌธ ์ ๊ฑฐํ๊ธฐ / ๊ณ์ฐ๊ธฐ ๋ง๋ค๊ธฐ (0) | 2023.05.01 |
๋๊ธ