๐คํํด์ฆ! ๋ค์ ์ค ๋ฌดํ ๋ฃจํ๋ ๋ฌด์์ ๋๊น?
8139 ๋จ์ด quizjavascript
ํด์ฆ!
๋ค์ ์ค ๋ฌดํ ๋ฃจํ๋ ๋ฌด์์
๋๊น?
๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ ๋ฒ console.log๊ฐ ์ธ์๋ ๊ฒ์
๋๋ค.
A: let
5x3 ๋ฃจํ
for(let i = 0; i < 5; i++){
for(let i = 0; i < 3; i++){
console.log(1)
}
}
B: var
5x3 ๋ฃจํ
for(var i = 0; i < 5; i++){
for(var i = 0; i < 3; i++){
console.log(1)
}
}
C: var
5x5 ๋ฃจํ
for(var i = 0; i < 5; i++){
for(var i = 0; i < 5; i++){
console.log(1)
}
}
D: let
5x5 ๋ฃจํ
for(let i = 0; i < 5; i++){
for(let i = 0; i < 5; i++){
console.log(1)
}
}
๋๋ต
๋ค์ ์ค ๋ฌดํ ๋ฃจํ๋ ๋ฌด์์
๋๊น?
B: var
5x3
์ฌ๋ฌ ๋ฒ console.log๊ฐ ์ธ์๋ ๊ฒ์
๋๋ค.
A: let
5x3 - 15ํ
B: var
5x3 - ๋ฌดํ ์๊ฐ
C: var
5x5 - 5ํ
D: let
5x5 - 25ํ
์ด๋ค ๋ต๋ณ์ด ๋น์ ์ ๋๋ผ๊ฒ ํ์ต๋๊น? ๋๋ ~์๋ค!
๐ง ๋ญ, ๊ทธ๋ฐ๋ฐ ์? let ๊ณผ var ์ ์ฐจ์ด์ .
< ํ๋์๋ฐฑ >
์ฃผ๋์ด ๊ฐ๋ฐ์๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ๋ฅผ ์ ๋ฐํ๋ Javascript ์ฝ๋์ ๋ฒ๊ทธ์ ๋ํด ๋์์ ์์ฒญํ์ต๋๋ค. ์ ์ง๊ฐ์ ์ด๋๊ฐ์ ๋ฌดํ ๋ฃจํ๊ฐ ์๋ค๊ณ ๋งํ์ต๋๋ค.
์ค์ฒฉ ๋ฃจํ ์ค ํ๋๋ ๋์๊ฒ ์ํ ์ ํธ๋ก ๋์ ๋์์ต๋๋ค.
for(let i = 0; i < 5; i++){
for(let i = 0; i < 5; i++){
// some code
}
}
๋๋ ๋งํ๋ค โ ์ด๋ด, ๋น์ ์ ์ธ๋ถ ๋ฃจํ์ ๋ด๋ถ ๋ฃจํ์ ๋ํด ๋์ผํ ๋ณ์ ์ด๋ฆ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ๋ฌดํ ๋ฃจํ๋ฅผ ์ผ๊ธฐํ ๊ฒ์
๋๋ค.
JD: ์ด? ์ด๋?
๋: ๋ด๋ถ ๋ฃจํ๊ฐ 0์ผ๋ก ์ฌ์ค์ i
๋์ด ์ธ๋ถ ๋ฃจํ๊ฐ ์ข
๋ฃ๋์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฝ์์์ ์๋ํด ๋ด
์๋ค. ๊ทธ๋ฅ ๋ณด๋ ๊ฒ์ด ๋ ๋น ๋ฆ
๋๋ค.
๋๋๊ฒ๋ ๋ฌดํ ๋ฃจํ๊ฐ ์์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์์ต๋๋ค.
console.log
๋ 25ํ๋ง ์ธ์๋์์ต๋๋ค.
๋: ์...? ์ด์ํ๋ค. (๊ทธ๋ฐ ๋ค์ ์ฝ๋๊ฐ let
๋์ var
๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.) ์ด์ฉ๋ฉด... ๋ฌดํ ๋ฃจํ๋ var
๋์ let
๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํฉ๋๋ค.
let
๋ฅผ var
๋ก ๋ณ๊ฒฝํ๊ณ ๋ค์ ์คํํ์ต๋๋ค.
console.log
๋ 5ํ๋ง ์ธ์๋์์ต๋๋ค.
์ฐ๋ฆฌ: ์ ๊น๋ง์? ์ 5๋ฒ๋ง ์ธ์ํฉ๋๊น?
๋: ... ์, ๊ทธ ์ด์ ๋ ์ด ์์ ์์๋ var
๋์ let
๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์
๋๋ค. let
๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ผํ ์ด๋ฆ์ผ๋ก ๋ฒ์ ๋ณ์๋ฅผ ์์ ํ๊ฒ ์ ์ธํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ var
๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋ถ๋ชจ-์์ ๋ฒ์์์ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ๋ณ์๋ฅผ ์ ์ธํ๋ฉด ๋ชจ๋ ๊ฐ์ ๊ฒ์ ์ฐธ์กฐํฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ๊ธฐ์ var
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ด๋ถ ๋ฃจํ๋ ์ธ๋ถ ๋ฃจํ์ ๋์ผํ i
๋ฅผ ๊ณต์ ํฉ๋๋ค. ์ฆ, ๋ด๋ถ ๋ฃจํ๊ฐ i
๋ฅผ 5๊น์ง ์ธ๊ณ ์ข
๋ฃํ๋ฉด ์ธ๋ถ ๋ฃจํ๋ ๋ด๋ถ โโ๋ฃจํ์ ์ํด i
์นด์ดํฐ๊ฐ 5๋ก ์ค์ ๋๊ธฐ ๋๋ฌธ์ ์ฆ์ ์ข
๋ฃ๋ฉ๋๋ค.
JD: ์ค... ์๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด i
๊ฐ 3์ผ ๋ ์ข
๋ฃํ๋๋ก ๋ด๋ถ ๋ฃจํ๋ฅผ ์ค์ ํ๋ฉด ์ด๋ป๊ฒ ๋ฉ๋๊น? ๋ฌดํ ๋ฃจํ๋ฅผ ์์ฑํ๋ค๊ณ ์๊ฐํฉ๋๊น?
๋: ์์๋ด
์๋ค.
console.log
๊ฐ 15ํ ๋๊ฒ ์ธ์๋์ด ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค์ด๋์์ต๋๋ค.
์ฐ๋ฆฌ: ๐ ๋ฌดํ ๋ฃจํ๊ฐ ๋ฐ์ํ์ต๋๋ค!
๊ทธ๋ฆฌ๊ณ ์ง๊ธ var
๋ฅผ let
๋ก ๋ณ๊ฒฝํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
console.log
๋ 15ํ๋ง ์ธ์๋์์ต๋๋ค.
JD: ์ข์ต๋๋ค. ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ var
์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ฌด์์
๋๊น?
๋: ์ ์ข์ ์ง๋ฌธ์ด๋ค์. ๐ค ...์ค์ ๋ก๋ ์์ต๋๋ค. ES6๊ฐ var
๋ฅผ ๋์
ํ ์ง๊ธ let
์ ๋ํ ์ข์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. var
๋ ์ฐ๋ฆฌ๊ฐ ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐ ์ฌ์ฉํ ๋ฐฉ๋ฒ์
๋๋ค. ํ์ง๋ง ๋ณ์๊ฐ ํด๋น ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๋ฌธ์ ๊ฐ ์์ผ๋ฏ๋ก let
๊ฐ ์ ์๋์์ต๋๋ค. ํค์๋let
์ ์ด๋ฆ์ ์ ํ ์ด์ ๋ ๋ฌป์ง ๋ง์ธ์. ์ด๊ฒ์ด ์ฐ๋ฆฌ์ eslint๊ฐ let
๋ณด๋ค var
๋ฅผ ์ํํ๋๋ก ๊ตฌ์ฑ๋ ์ด์ ์
๋๋ค. :)
JD: ์ค! ์ข์ต๋๋ค... ์ด ๋ฃจํ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ๋ฅผ ์ผ์ผํค์ง ์๋๋ค๋ฉด ๋ฌด์์ด ์์ธ์ผ๊น์? (๊ทธ๊ฒ์ ์์ ํ ๋ค๋ฅธ ๊ฒ์ผ๋ก ํ๋ช
๋์์ต๋๋ค.)
์ ๋์ด์ผ ์๊ฐํด๋ณด๋ฉด ์ฐ๋ฆฌ๋ ์ด์ ES6๋ฅผ ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐คํํด์ฆ! ๋ค์ ์ค ๋ฌดํ ๋ฃจํ๋ ๋ฌด์์
๋๊น?), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
https://dev.to/uilicious/pop-quiz-which-of-these-is-an-infinite-loop-p6d
ํ
์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
for(let i = 0; i < 5; i++){
for(let i = 0; i < 3; i++){
console.log(1)
}
}
for(var i = 0; i < 5; i++){
for(var i = 0; i < 3; i++){
console.log(1)
}
}
for(var i = 0; i < 5; i++){
for(var i = 0; i < 5; i++){
console.log(1)
}
}
for(let i = 0; i < 5; i++){
for(let i = 0; i < 5; i++){
console.log(1)
}
}
๋ค์ ์ค ๋ฌดํ ๋ฃจํ๋ ๋ฌด์์ ๋๊น?
B:
var
5x3์ฌ๋ฌ ๋ฒ console.log๊ฐ ์ธ์๋ ๊ฒ์ ๋๋ค.
A:
let
5x3 - 15ํB:
var
5x3 - ๋ฌดํ ์๊ฐC:
var
5x5 - 5ํD:
let
5x5 - 25ํ์ด๋ค ๋ต๋ณ์ด ๋น์ ์ ๋๋ผ๊ฒ ํ์ต๋๊น? ๋๋ ~์๋ค!
๐ง ๋ญ, ๊ทธ๋ฐ๋ฐ ์? let ๊ณผ var ์ ์ฐจ์ด์ .
< ํ๋์๋ฐฑ >
์ฃผ๋์ด ๊ฐ๋ฐ์๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ๋ฅผ ์ ๋ฐํ๋ Javascript ์ฝ๋์ ๋ฒ๊ทธ์ ๋ํด ๋์์ ์์ฒญํ์ต๋๋ค. ์ ์ง๊ฐ์ ์ด๋๊ฐ์ ๋ฌดํ ๋ฃจํ๊ฐ ์๋ค๊ณ ๋งํ์ต๋๋ค.
์ค์ฒฉ ๋ฃจํ ์ค ํ๋๋ ๋์๊ฒ ์ํ ์ ํธ๋ก ๋์ ๋์์ต๋๋ค.
for(let i = 0; i < 5; i++){
for(let i = 0; i < 5; i++){
// some code
}
}
๋๋ ๋งํ๋ค โ ์ด๋ด, ๋น์ ์ ์ธ๋ถ ๋ฃจํ์ ๋ด๋ถ ๋ฃจํ์ ๋ํด ๋์ผํ ๋ณ์ ์ด๋ฆ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ๋ฌดํ ๋ฃจํ๋ฅผ ์ผ๊ธฐํ ๊ฒ์
๋๋ค.
JD: ์ด? ์ด๋?
๋: ๋ด๋ถ ๋ฃจํ๊ฐ 0์ผ๋ก ์ฌ์ค์ i
๋์ด ์ธ๋ถ ๋ฃจํ๊ฐ ์ข
๋ฃ๋์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฝ์์์ ์๋ํด ๋ด
์๋ค. ๊ทธ๋ฅ ๋ณด๋ ๊ฒ์ด ๋ ๋น ๋ฆ
๋๋ค.
๋๋๊ฒ๋ ๋ฌดํ ๋ฃจํ๊ฐ ์์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์์ต๋๋ค.
console.log
๋ 25ํ๋ง ์ธ์๋์์ต๋๋ค.
๋: ์...? ์ด์ํ๋ค. (๊ทธ๋ฐ ๋ค์ ์ฝ๋๊ฐ let
๋์ var
๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.) ์ด์ฉ๋ฉด... ๋ฌดํ ๋ฃจํ๋ var
๋์ let
๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํฉ๋๋ค.
let
๋ฅผ var
๋ก ๋ณ๊ฒฝํ๊ณ ๋ค์ ์คํํ์ต๋๋ค.
console.log
๋ 5ํ๋ง ์ธ์๋์์ต๋๋ค.
์ฐ๋ฆฌ: ์ ๊น๋ง์? ์ 5๋ฒ๋ง ์ธ์ํฉ๋๊น?
๋: ... ์, ๊ทธ ์ด์ ๋ ์ด ์์ ์์๋ var
๋์ let
๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์
๋๋ค. let
๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ผํ ์ด๋ฆ์ผ๋ก ๋ฒ์ ๋ณ์๋ฅผ ์์ ํ๊ฒ ์ ์ธํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ var
๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋ถ๋ชจ-์์ ๋ฒ์์์ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ๋ณ์๋ฅผ ์ ์ธํ๋ฉด ๋ชจ๋ ๊ฐ์ ๊ฒ์ ์ฐธ์กฐํฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ๊ธฐ์ var
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ด๋ถ ๋ฃจํ๋ ์ธ๋ถ ๋ฃจํ์ ๋์ผํ i
๋ฅผ ๊ณต์ ํฉ๋๋ค. ์ฆ, ๋ด๋ถ ๋ฃจํ๊ฐ i
๋ฅผ 5๊น์ง ์ธ๊ณ ์ข
๋ฃํ๋ฉด ์ธ๋ถ ๋ฃจํ๋ ๋ด๋ถ โโ๋ฃจํ์ ์ํด i
์นด์ดํฐ๊ฐ 5๋ก ์ค์ ๋๊ธฐ ๋๋ฌธ์ ์ฆ์ ์ข
๋ฃ๋ฉ๋๋ค.
JD: ์ค... ์๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด i
๊ฐ 3์ผ ๋ ์ข
๋ฃํ๋๋ก ๋ด๋ถ ๋ฃจํ๋ฅผ ์ค์ ํ๋ฉด ์ด๋ป๊ฒ ๋ฉ๋๊น? ๋ฌดํ ๋ฃจํ๋ฅผ ์์ฑํ๋ค๊ณ ์๊ฐํฉ๋๊น?
๋: ์์๋ด
์๋ค.
console.log
๊ฐ 15ํ ๋๊ฒ ์ธ์๋์ด ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค์ด๋์์ต๋๋ค.
์ฐ๋ฆฌ: ๐ ๋ฌดํ ๋ฃจํ๊ฐ ๋ฐ์ํ์ต๋๋ค!
๊ทธ๋ฆฌ๊ณ ์ง๊ธ var
๋ฅผ let
๋ก ๋ณ๊ฒฝํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
console.log
๋ 15ํ๋ง ์ธ์๋์์ต๋๋ค.
JD: ์ข์ต๋๋ค. ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ var
์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ฌด์์
๋๊น?
๋: ์ ์ข์ ์ง๋ฌธ์ด๋ค์. ๐ค ...์ค์ ๋ก๋ ์์ต๋๋ค. ES6๊ฐ var
๋ฅผ ๋์
ํ ์ง๊ธ let
์ ๋ํ ์ข์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. var
๋ ์ฐ๋ฆฌ๊ฐ ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐ ์ฌ์ฉํ ๋ฐฉ๋ฒ์
๋๋ค. ํ์ง๋ง ๋ณ์๊ฐ ํด๋น ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๋ฌธ์ ๊ฐ ์์ผ๋ฏ๋ก let
๊ฐ ์ ์๋์์ต๋๋ค. ํค์๋let
์ ์ด๋ฆ์ ์ ํ ์ด์ ๋ ๋ฌป์ง ๋ง์ธ์. ์ด๊ฒ์ด ์ฐ๋ฆฌ์ eslint๊ฐ let
๋ณด๋ค var
๋ฅผ ์ํํ๋๋ก ๊ตฌ์ฑ๋ ์ด์ ์
๋๋ค. :)
JD: ์ค! ์ข์ต๋๋ค... ์ด ๋ฃจํ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ๋ฅผ ์ผ์ผํค์ง ์๋๋ค๋ฉด ๋ฌด์์ด ์์ธ์ผ๊น์? (๊ทธ๊ฒ์ ์์ ํ ๋ค๋ฅธ ๊ฒ์ผ๋ก ํ๋ช
๋์์ต๋๋ค.)
์ ๋์ด์ผ ์๊ฐํด๋ณด๋ฉด ์ฐ๋ฆฌ๋ ์ด์ ES6๋ฅผ ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐คํํด์ฆ! ๋ค์ ์ค ๋ฌดํ ๋ฃจํ๋ ๋ฌด์์
๋๊น?), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
https://dev.to/uilicious/pop-quiz-which-of-these-is-an-infinite-loop-p6d
ํ
์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
for(let i = 0; i < 5; i++){
for(let i = 0; i < 5; i++){
// some code
}
}
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐คํํด์ฆ! ๋ค์ ์ค ๋ฌดํ ๋ฃจํ๋ ๋ฌด์์ ๋๊น?), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/uilicious/pop-quiz-which-of-these-is-an-infinite-loop-p6dํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค