๋ง์ ๊ฐ๋ฐ์๋ค์ด ์ ์๊ณ ์๋ฏ์ด JavaScript ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์์ผ๋ฉฐ ๋๋ก๋ ์์ ํ ๊ฒ์ด ๋ ์ ์์ต๋๋ค. ์
๋ฌด๋ฅผ ์งํํ๋ค ๋ณด๋ฉด ํ์ฐ์ ์ผ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ , ๊ทธ ์ค ์ผ๋ถ๋ ์์ฃผ ๋ฐ๋ณต๋๊ธฐ๋ ํฉ๋๋ค. ์ด๋ณด ๊ฐ๋ฐ์๋ฅผ ๋์์ผ๋ก ์์ฑ๋ ์ด ๊ธฐ์ฌ์์๋ ์ด๋ฌํ ์ค๋ฅ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช
ํฉ๋๋ค. ๋ช
ํ์ฑ์ ์ํด ํจ์, ์์ฑ, ๊ฐ์ฒด์ ์ด๋ฆ์ ๋ค์์์ ๋ฐ์์ต๋๋ค.
์๋ฆผ: "Habr"์ ๋ชจ๋ ๋ ์๋ฅผ ์ํ - "Habr" ํ๋ก๋ชจ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ Skillbox ๊ณผ์ ์ ๋ฑ๋กํ ๋ 10 ๋ฃจ๋ธ ํ ์ธ.
Skillbox๋ ๋ค์์ ๊ถ์ฅํฉ๋๋ค. ์ค๊ธฐ ์ฝ์ค
"๋ชจ๋ฐ์ผ ๊ฐ๋ฐ์ PRO" .
TypeError: ์์ฑ์ด ์ ์๋์ง ์์์ต๋๋ค.
let girl = {
name: "Lucky",
location: "Hollywood",
profession: "star",
thingsMissingInHerLife: true,
lovely: true,
cry: function() {
return "cry, cry, cries in her lonely heart"
}
}
console.log(girl.named.lucky)
์์ ์์ ์ฝ๋์์๋ Uncaught TypeError: Cannot read property 'lucky' of undefed ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฌธ์ ๋ girl ๊ฐ์ฒด์ name ์์ฑ์ด ์์ง๋ง ๋ช ๋ช ๋ ์์ฑ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ girl.named ์์ฑ์ ์ ์๋์ด ์์ง ์์ผ๋ฏ๋ก ๊ณต์์ ์ผ๋ก ์กด์ฌํ์ง ์์ผ๋ฏ๋ก ์ก์ธ์คํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ girl.named.lucky๋ฅผ girl.name์ผ๋ก ๋ฐ๊พธ๋ฉด ๋ชจ๋ ๊ฒ์ด ์๋ํ๊ณ ํ๋ก๊ทธ๋จ์ Lucky๋ฅผ ๋ฐํํฉ๋๋ค.
์์ฑ์ ๋ํด ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค.
TypeError๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ
TypeError๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ํน์ ์ ํ๊ณผ ์ผ์นํ์ง ์๋ ๋ฐ์ดํฐ์ ๋ํด ์์ ์ ์ํํ๋ ค๊ณ ํ ๋ ๋ฐ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด .bold() ์ฌ์ฉ, ์ ์๋์ง ์์ ์์ฑ ์์ฒญ, ์ค์ ๋ก ํจ์๊ฐ ์๋ ํจ์ ํธ์ถ ๋ฑ์ด ์์ต๋๋ค.
๋ฐ๋ผ์ girl()์ ํธ์ถํ๋ ค๊ณ ํ๋ฉด Uncaught TypeError: yourVariable.bold๋ ํจ์๊ฐ ์๋๋ฉฐ girl์ ํจ์๊ฐ ์๋๋๋ค. ์ค์ ๋ก ํจ์๊ฐ ์๋๋ผ ํธ์ถ๋๋ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ค๋ฅ๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด ๋ณ์๋ฅผ ์ฐ๊ตฌํด์ผ ํฉ๋๋ค. ๊ทธ๋ผ ์ฌ์๋ ๋ฌด์์ธ๊ฐ? girl.name์ด ๋ญ์ฃ ? ์ฝ๋๋ฅผ ๋ถ์ํ๊ฑฐ๋, console.log, ๋๋ฒ๊ฑฐ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ํ์ํ๊ฑฐ๋, ์ฝ์์์ ๋ณ์ ์ด๋ฆ์ ํธ์ถํ์ฌ ํ์ธํ ์ ์์ต๋๋ค. ๋ณ์์ ํฌํจ๋ ๋ฐ์ดํฐ ์ ํ์ ๋ํด ์ฐ์ฐ์ด ๊ฐ๋ฅํ์ง ํ์ธํด์ผ ํฉ๋๋ค. ๋ง์ง ์์ผ๋ฉด ์กฐ๊ฑด์ ์ถ๊ฐํ๊ฑฐ๋ try..catch ๋ธ๋ก์ ์ถ๊ฐํ๋ ๋ฑ ๋ณ๊ฒฝํ๊ณ ์์ ์คํ์ ์ ์ดํ ์ ์์ต๋๋ค.
์คํ ์ค๋ฒํ๋ก
Baby One More Time(Britney Spears์ ๋๋ค)์ด๋ผ๋ ๋ ธ๋์ ๊ฐ์ฌ ์์ฑ์๋ฅผ ๋ฏฟ๋๋ค๋ฉด, ์ด ๋ฌธ๋งฅ์์ hit๋ผ๋ ๋จ์ด๋ ๊ฐ์๊ฐ ๋ค์ ๋ถ๋ฆ์ ๋ฐ๊ณ ์ ํ๋ ์๊ตฌ๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ ธ๋ - ๋ฒ์ญ๊ฐ์ ๋ฉ๋ชจ). ์ด๋ฌํ ์๊ตฌ๊ฐ ์ค์ ์ํ์์์ ํตํ ํ์ ์ฆ๊ฐ๋ก ์ด์ด์ง ์๋ ์์ต๋๋ค. ํ์ง๋ง ํ๋ก๊ทธ๋๋ฐ์์ ์ด๋ ํธ์ถ ์คํ์ด ์ค๋ฒํ๋ก๋๋ฉด ์ค๋ฅ๋ฅผ ์ผ์ผํฌ ์ ์๋ ์ฌ๊ท์ ๋๋ค.
์ค๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ค๋ฅ: ์คํ ๊ณต๊ฐ ๋ถ์กฑ(Edge)
๋ด๋ถ ์ค๋ฅ: ์ฌ๊ท๊ฐ ๋๋ฌด ๋ง์ต๋๋ค(Firefox)
RangeError: ์ต๋ ํธ์ถ ์คํ ํฌ๊ธฐ๊ฐ ์ด๊ณผ๋์์ต๋๋ค(Chrome).
๊ฐ๋ฐ์๊ฐ ์ฌ๊ท์์ ๊ธฐ๋ณธ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ง ์๊ฑฐ๋ ์ฝ๋๊ฐ ์๋ํ ์ฌ๋ก๋ฅผ ์ฒ๋ฆฌํ์ง ์๋ ๊ฒฝ์ฐ ์คํ ์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํฉ๋๋ค.
function oneMoreTime(stillBelieve=true, loneliness=0) {
if (!stillBelieve && loneliness < 0) return
loneliness++
return oneMoreTime(stillBelieve, loneliness)
}
์ด ๊ฒฝ์ฐ stillBelieve๋ false๊ฐ ๋ ์ ์์ผ๋ฏ๋ก ๋งค๋ฒ oneMoreTime์ด ํธ์ถ๋์ง๋ง ํจ์๋ ์๋ฃ๋์ง ์์ต๋๋ค.
๋ ๋ช ์ ์น๊ตฌ์๊ฒ ์์งํ๊ธฐ ์์ํ๋ฉด ์ธ๋ก์์ด ์ค์ด๋ค๊ณ ์ ํ๋ฅผ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค.
function oneMoreTime(stillBelieve=true, loneliness=0) {
if (!stillBelieve && loneliness < 0) return
loneliness--
stillBelieve = false
return oneMoreTime(stillBelieve, loneliness)
}
์์คํ ์ด ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์์ฑํ์ง ์์ง๋ง JavaScript ์ฝ๋๊ฐ ์คํ๋๋ ํ์ด์ง๊ฐ ๋จ์ํ ์ ์ง๋๋ ๋ฌดํ ๋ฃจํ๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ ์๋ก ๋ค ์ ์์ต๋๋ค. ์ด๋ while ๋ฃจํ์ ์ข ๋ฃ ์กฐ๊ฑด์ด ์์ ๋ ๋ฐ์ํฉ๋๋ค.
let worldEnded = false
while (worldEnded !== true) {
console.log("Keep on dancin' till the world ends")
}
๋ค์๊ณผ ๊ฐ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
let worldEnded = false
while (worldEnded !== true) {
console.log("Keep on dancin' till the world ends")
worldEnded = true
}
๋ฌดํ ๋ฃจํ ๋ฐ ์ฌ๊ท ๋๋ฒ๊น
๋ฌดํ ๋ฃจํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ Chrome์ด๋ Edge์์๋ ํญ์ ๋ซ๊ณ Firefox์์๋ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ๋ซ์์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฝ๋๋ฅผ ์ฃผ์ ๊น๊ฒ ๋ถ์ํด์ผ ํฉ๋๋ค. ๋ฌธ์ ๋ฅผ ์ฐพ์ ์ ์๋ค๋ฉด ๋ฃจํ๋ ํจ์์ ๋๋ฒ๊ฑฐ ๋ช ๋ น์ ์ถ๊ฐํ๊ณ ๋ณ์ ๊ฐ์ ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ์์ํ ๊ฒฐ๊ณผ์ ์ผ์นํ์ง ์์ผ๋ฉด ์ด๋ฅผ ๊ต์ฒดํฉ๋๋ค. ์ด ์์ ์ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค.
์์ ์์์๋ ํจ์๋ ๋ฃจํ์ ์ฒซ ๋ฒ์งธ ์ค์ ๋๋ฒ๊ฑฐ๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ Chrome์์ ๋๋ฒ๊ทธ ํญ์ ์ด๊ณ ๋ฒ์ ๋ด ๋ณ์๋ฅผ ๋ถ์ํด์ผ ํฉ๋๋ค. ๋ค์ ๋ฒํผ์ ์ฌ์ฉํ๋ฉด ๊ฐ ๋ฐ๋ณต๋ง๋ค ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ ์ ์์ต๋๋ค. ์ด ๋ชจ๋ ์์ ์ ์ฝ๊ฒ ์ํํ ์ ์์ผ๋ฉฐ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋ฉ๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ์์ ์ฝ์ ์ ์์ต๋๋ค(
๊ตฌ๋ฌธ ์ค๋ฅ
JavaScript์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ค๋ฅ ์ค ํ๋๋ SyntaxError์ ๋๋ค. ํ ์คํธ ํธ์ง๊ธฐ ํ์ฅ์ ์ฌ์ฉํ๋ฉด ์ด๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด Bracket pair Colorizer๋ ์ฝ๋์ ๊ดํธ๋ฅผ ๋ค์ํ ์์์ผ๋ก ํ์ํ๊ณ Prettier ๋๋ ์ ์ฌํ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฅ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค. SyntaxError์ ๊ฐ๋ฅ์ฑ์ ์ค์ด๋ ๊ฐ์ฅ ์ข์ ์ต์ ์ ์ต์ํ์ ์ค์ฒฉ์ ๋๋ค.
๋๊ธ๋ก ๊ณต์ ํด์ฃผ์ธ์: ์ค์๋ฅผ ๋ฐฉ์งํ๊ฑฐ๋ ์ ์ํ๊ฒ ๊ฐ์งํ๊ณ ์ ๊ฑฐํ๊ธฐ ์ํด ๋ฌด์์ ํ์๋์?
Skillbox๋ ๋ค์์ ๊ถ์ฅํฉ๋๋ค.
- XNUMX๋ ์ค์ต ์ฝ์ค
"์ ๋ PRO ์น ๊ฐ๋ฐ์์ ๋๋ค" .- ์จ๋ผ์ธ ์ฝ์ค
"0์ C# ๊ฐ๋ฐ์" .- ์ค๊ธฐ ์ฝ์ค
"0์์ PRO๋ก์ PHP ๊ฐ๋ฐ์" .
์ถ์ฒ : habr.com