[JS] ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ด ๋ฌธ๋ฒ ์ดํด๋ณด๊ธฐ : ๋ณ์ 1
( UPDATE 2023 - 06 - 02 )
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ปดํจํฐ(๊ธฐ๊ณ)์ ๋ช ๋ น ๋๋ ์ฐ์ฐ์ ์ํํ๊ฒ ํ ๋ชฉ์ ์ผ๋ก ์ค๊ณํ ์ธ์ด๋ก,
์ฌ๋์ด ์ปดํจํฐ์ ์์ฌ์ํตํ ์ ์๊ฒ ํ๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๊ณต๋ถํ๋ ค๋ฉด ๊ฐ ์ธ์ด์์ ์ ๊ณตํ๋ ๊ธฐ์ด ๋ฌธ๋ฒ๋ถํฐ ๋ฐฐ์์ผํ๋ค.
๊ธฐ์ด ๋ฌธ๋ฒ์ ๋ํ์ ์ธ ์๋ก ๋ณ์์ ์์, ์๋ฃํ, ์ฐ์ฐ์, ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ์์ธ ์ฒ๋ฆฌ ๋ฑ์ด ์๋ค.
์ด ๊ฐ๋ ๋ค์ ๊ผญ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์๋๋๋ผ๋ ํ์์ด ์กฐ๊ธ ๋ค๋ฅผ ๋ฟ ๋๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ณตํต์ผ๋ก ์กด์ฌํ๋ค.
๊ทธ๋ผ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ด๋ฐ ๋ฌธ๋ฒ๋ค์ ์ด๋ป๊ฒ ๋ค๋ฃจ๋์ง ๋ฐฐ์๋ณด์.
๋ณ์๋ ๋ฌด์์ธ๊ฐ? ์ ํ์ํ๊ฐ?
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๊ณต๋ถํ ๋ ๊ฐ์ฅ ๋จผ์ ๋ฐฐ์ฐ๋ ๊ฐ๋ ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ด๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ณ , ์๋ฌด๋ฆฌ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ผํด๋
๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ฒ๋ฆฌํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์ด ์ ๋ถ์ด๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ด ํ์ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ ๋ณ์์ ์์๋ผ๊ณ ํ๋ค.
๋ณ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ํต์ฌ ๊ฐ๋ ์ด๋ค.
๋ณ์
Variables(๋ณ์)๋ ๋ณํ๋ ์๋ฅผ ๋ปํ๊ณ , ๊ฐ์ ์ ์ฅํ ์ ์๋ ์ปจํ ์ด๋๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๊ทธ๋์ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๊ฐ์ด ๋ณํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ณต๊ฐ์ผ๋ก ๋ณ์๋ฅผ ๋ง๋ ๋ค.
๋ณ์๋ผ๋ ๊ณต๊ฐ์ ๋ง๋ค๋ ค๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ์ ์ ํด์ง ๋ฌธ๋ฒ์ ๋ง์ถฐ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค.
๋ณ์๋ฅผ ์ ์ธํ ๋ var ๋๋ let ํค์๋ ๋ค์ ์ํ๋ ์ด๋ค ์ด๋ฆ์ ๋ถ์ด๋ฉด ๋๋ค.
let myVariable;
์ฐธ๊ณ ์ฌํญ
* ์ฐธ๊ณ 1: ํ ์ค์ ๋์ ์๋ ์ธ๋ฏธ์ฝ๋ก ์ ๋ฌธ(statement)์ ๋์ ๋ํ๋ธ๋ค.
ํ ์ค์ ์๋ ์ฌ๋ฌ ๋ฌธ์ ๋ถ๋ฆฌํ ํ์๊ฐ ์์ ๋์๋ง ๋ฐ๋์ ํ์ํ๋ค.
ํ์ง๋ง, ์ด๋ค ์ฌ๋์ ๊ฐ ๋ฌธ์ ๋์ ์ธ๋ฏธ์ฝ๋ก ์ ๋ฃ๋ ๊ฒ์ด ์ข์ ์ต๊ด์ด๋ผ ๋ฏฟ๋๋ค.
์ธ์ ์ธ๋ฏธ์ฝ๋ก ์ ๋ฃ๊ณ ์ธ์ ๋ฃ์ผ๋ฉด ์๋๋์ง์ ๋ํ ๋ค๋ฅธ ๊ท์น์ด ์๋ค
์์ธํ ์ฌํญ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ธ๋ฏธ์ฝ๋ก ์๋ด(Your Guide to Semicolons in JavaScript)๋ฅผ ์ฐธ๊ณ ํ์.
* ์ฐธ๊ณ 2: ๊ฑฐ์ ๋ชจ๋ ์ด๋ฆ์ ๋ณ์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ ์ ์์ง๋ง, ๋ช ๊ฐ์ง ์ ํ์ด ์๋ค.
๋ณ์ ์ด๋ฆ์ ๋ํด ํ์ ์ด ์๋ค๋ฉด, ๋ณ์๋ช ์ฒดํฌํ๊ธฐ(check your variable name)์์ ์ ์ ํ ๋ณ์๋ช ์ธ์ง ํ์ธํด ๋ณผ ์ ์๋ค.
*์ฐธ๊ณ 3: ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ค.
myVariable์ myvariable๊ณผ๋ ๋ค๋ฅธ ๋ณ์์ด๋ค. ๋ง์ฝ ์ฝ๋์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค๋ฉด, ๋์๋ฌธ์๋ฅผ ํ์ธํด๋ณด์!
ํค์๋(์์ฝ์ด)
ํค์๋(keyword)๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ด๋ค ์ญํ ์ด๋ ๊ธฐ๋ฅ์ด ์ ํด์ง ํน๋ณํ ๋จ์ด์ด๋ค.
๋ค๋ฅธ ์ฉ์ด๋ก ์์ฝ์ด(reserved word)๋ผ๊ณ ๋ ํ๋ค.
์๋ฅผ ๋ค์ด, ๋ณ์๋ผ๋ ๊ณต๊ฐ์ ์์ฑํ ๋๋ var ํค์๋๋ฅผ ์ฌ์ฉํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ํค์๋๋ ์์ ์ฌ์ง์ฒ๋ผ ๋ง์ง๋ง, ์ด๋ฅผ ๋ค ์๊ธฐํ ํ์๋ ์๋ค.
ํค์๋๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์์ ์ฌ์ฉํ๋ ๋จ์ด์ด๋ฏ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ๊ณต๋ถํ๋ค ๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๊ธฐ์ต๋ ๊ฒ์ด๋ค.
์๋ณ์
๋ณ์ ์ด๋ฆ์ ์๋ณ์(identifier)๋ผ๊ณ ๋ ํ๋ค.
์๋ณ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ด๋ถ์์ ๋ณ์, ํจ์ ๋ฑ์ ๋ถ์ฌ๋๋ ์ด๋ฆ์ ์๋ฏธํ๋ค.
์ฆ, ์๋ณ์๋ ์ด๋ค ๊ฐ์ ๊ตฌ๋ณํด์ ์๋ณํ ์ ์๋ ๊ณ ์ ํ ์ด๋ฆ์ด๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋์ด ์๋ค.
๋ฐ๋ผ์, ์๋ณ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋์ด ์๋ ์ด๋ค ๊ฐ์ ๊ตฌ๋ณํด์ ์๋ณํด๋ด์ผ ํ๋ค.
๋ฉ๋ชจ๋ฆฌ๋ ๊ต์ฅํ ์ถ์์ ์ด๊ธฐ ๋๋ฌธ์
์ฌ๋์ด ์ดํดํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ํน์ ๊ณต๊ฐ์ ์๋ณํ ์ ์๋ ์๋ณ์๋ฅผ ์ฌ์ฉํด ๋ํ๋ธ๋ค.
์ด๋ฅผ ์ํด ์๋ณ์๋ ์ด๋ค ๊ฐ์ด ์ ์ฅ๋์ด ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ธฐ์ต(์ ์ฅ)ํด์ผ ํ๋ค.
(์๋ณ์๊ฐ ๊ธฐ์ตํ๋ ๊ฒ: ๊ฐ X, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์O)
์๋ณ์๋ก ๊ฐ์ ๊ตฌ๋ณํด์ ์๋ณํ๋ค๋ ๊ฒ์ ์๋ณ์๊ฐ ๊ธฐ์ตํ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋ ๊ฐ์ ์ ๊ทผํ ์ ์๋ค.
๋ฐ๋ผ์, ์๋ณ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ถ์ธ ์ด๋ฆ ์ด๋ผ๊ณ ํ ์ ์๋ค.
์๋ณ์๋ ์์ ์ฌ์ฉ๋ ํค์๋์ ์ญํ ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
์๋ฅผ ๋ค์ด, ๋ณ์,ํจ์, ํด๋์ค ๋ฑ์ ์ด๋ฆ์ ๋ชจ๋ ์๋ณ์๋ค.
๋ฉ๋ชจ๋ฆฌ ์์ ์กด์ฌํ๋ ์ด๋ค ๊ฐ์ ์๋ณํ ์ ์๋ ์ด๋ฆ์ ๋ชจ๋ ์๋ณ์๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
* ๋ณ์๋ฅผ ์์ฑํ๋ var, let, const ๋ฑ์ ํค์๋์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ณ์๋ช ์ด๋ผ๊ณ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ํค์๋๋ ์๋ณ์๋ก ์ฌ์ฉํ ์ ์๋ค.
์ฐ์ฐ์
์ฐ์ฐ์(operator)๋ ์ด๋ฆ ๊ทธ๋๋ก ๋ ๊ฐ(๋๋ ๋ณ์)๋ก ๋ถํฐ ์ฐ์ฐ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ด๋ ์ํ๊ธฐํธ์ด๋ค.
๋ค์ ํ ์ด๋ธ์์ ๊ฐ์ฅ ๊ฐ๋จํ ์ฐ์ฐ์ ๋ช ๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ์(console)์์ ์คํํด ๋ณผ ์ ์๋ ์์ ๋ช ๊ฐ๋ฅผ ๊ฐ์ด ๋ณด์.
* ์ฐธ๊ณ : ๊ณ์ฐ์ ์ํํ ๋ ์๋ฃํ์ด ์์ด๊ฒ ๋๋ฉด ์ด์ํ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฌ์ฌ ์ ์์ผ๋ฏ๋ก, ๋ณ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐธ์กฐํด ์์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๊ฒ ์ฃผ์ํด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด "35" + "25"๋ฅผ ์ฝ์์ ์ ๋ ฅํด ๋ณด์. ์ ์์ํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์์๊น? ์ธ์ฉ๋ถํธ๊ฐ ์ซ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณ๊ฒฝํ์๊ณ , ์ซ์๋ฅผ ๋ํ๋ ๋์ ์ ๋ฌธ์์ด์ ๋ถ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ป์๋ค. 35 + 25๋ฅผ ์ ๋ ฅํ๋ค๋ฉด, ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ๋๋ค.
๊ธฐํ ์ฉ์ด ์ ๋ฆฌ
๊ฐ
๊ฐ(value)์ ๋ ์ด์ ํ๊ฐํ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด, 10 + 20์ 30 ์ด๋ผ๋ ๊ฒฐ๊ณผ ๊ฐ์ผ๋ก ํ๊ฐํ๊ธฐ ๋๋ฌธ์, ํํ์์ด์ง๋ง
ํํ์์ ๊ฒฐ๊ณผ๋ก ๋์ถ๋ 30์ ๋ ์ด์ ํ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ๋๋ค.
ํํ์
ํํ์(expression)์ด๋ ํ๊ฐ(evaluation, ํํ์์ ์คํํด ํ๋์ ๊ฐ์ ๋ง๋๋ ๊ณผ์ )๋์ด
ํ๋์ ๊ฐ์ ๋ฐํํ๋ ์ ๋๋ ์ฝ๋๋ฅผ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด, 10 + 20์ด ํํ์์ด๋ผ๊ณ ํ ์ ์๋ค.
์ธ๋ฏธ์ฝ๋ก
์์ ์ฐธ๊ณ ์ฌํญ์ ์งง๊ฒ ์ธ๊ธํ์ง๋ง ๋ค์ ์์ธํ๊ฒ ์ ๋ฆฌํ๋ค.
์ธ๋ฏธ์ฝ๋ก (semicolon)์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ํ๋์ ๋ฌธ(statement, ๋ฌธ๋ฒ)์ด ๋๋ฌ์์ ์๋ฏธํ๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ปดํจํฐ์๊ฒ ๋ช ๋ น ๋๋ ์ฐ์ฐ์ ์ํํ๊ฒ ํ ๋ชฉ์ ์ ์ธ์ด์ด๋ค.
๊ทธ๋์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฌธ๋ฒ์ 1๊ฐ์ ๋ช ๋ น์ ํ๋์ ๋ฌธ๋ฒ์ด๋ผ๊ณ ๋ณด๊ณ ๋์ ; ๊ธฐํธ๋ฅผ ๋ถ์ฌ
ํ๋์ ๋ช ๋ น๋ฌธ์ด ๋๋ฌ์์ ๋ช ์์ ์ผ๋ก ํํํ๊ธฐ๋ฅผ ๊ถ์ฅํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ์ธ๋ฏธ์ฝ๋ก ์๋ด(Your Guide to Semicolons in JavaScript)
์ ์ธ, ํ ๋น, ์ด๊ธฐํ
๋ณ์๋ฅผ ์์ฑํ๊ณ ๊ฐ์ ์ ์ฅํ๋ ๋ฌธ๋ฒ์์ var ํค์๋๋ ์ดํ์ ๋ฐฐ์ฐ๋
let, const ํค์๋๋ฅผ ์ฌ์ฉํด ๋ณ์์ ์๋ณ์๋ฅผ ์ง์ ํ๋ ํ์๋ฅผ ๋ณ์๋ฅผ ์ ์ธํ๋ค๊ณ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ํ ๋น ์ฐ์ฐ์์ธ = ๊ธฐํธ๋ก ์ฐ๋ณ์ ์๋ ๊ฐ์ ๋ณ์ ๊ณต๊ฐ์ ๋์ (์ ์ฅ)ํ๋ ๊ฒ์ ๊ฐ์ ํ ๋นํ๋ค๊ณ ํ๋ค.
๋ณ์๋ ์ด๊ธฐ์ ๊ฐ์ ํ ๋นํ์ง ์๊ณ ์ ์ธ๋ง ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ด ์์ฑํด๋ ๋ณ์ ์ ์ธ์ด๋ค.
var num;
๋๋ ์ ์ธ๊ณผ ํ ๋น์ ๊ฐ์ด ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
var num = 10 + 20; // ๋ณ์ num์ ์ด๊ธฐํ ํ๋ค.
์ ์ธ๊ณผ ํ ๋น์ ํ ๋ฒ์ ํ๋ฉด ๋ณ์๋ฅผ ์ด๊ธฐํ ํ๋ค๊ณ ํ๋ค.
์ฌ๊ธฐ์ ์ดํด๋ณธ ํค์๋, ์๋ณ์, ์ฐ์ฐ์, ํํ์, ๊ฐ, ์ธ๋ฏธ์ฝ๋ก , ์ ์ธ, ํ ๋น, ์ด๊ธฐํ ๋ฑ์ ์ฉ์ด๋ ์์ผ๋ก๋ ์์ฃผ ๋ฑ์ฅํ๋ฏ๋ก
๊ผญ ๊ธฐ์ตํด๋์!
* ์ฐธ๊ณ : ๋ณ์๋ฅผ ์ ์ธํ๊ณ ํ ๋นํ ๋ '10 + 20' ๊ณผ ๊ฐ์ด ๋์ ์ผ์ผ๋, ๋ถ์ฌ ์จ๋ ์๊ด์๋ค.
๋จ, ํค์๋์ ์๋ณ์๋ ๊ผญ ํ ์นธ ๋์ด ์จ์ผ ํ๋ค.
// ๋ณ์๋ฅผ ์ ์ธํ๊ณ ํ ๋นํ ๋ ์ฝ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋ค.
var num = 10 + 20;
// ๊ทธ๋ฐ๋ฐ ๋ค์์ฒ๋ผ ๋ถ์ฌ ์จ๋ ๋๋ค.
var num=10+20;
// ๋จ, ํค์๋์ ์๋ณ์๋ ๊ผญ ํ ์นธ ๋์ ์จ์ผ ํ๋ค.
๋ ์ฝ๋๋ ๋จ์ํ ๊ฐ๋ ์ฑ ์ฐจ์ด๋ง ์์ ๋ฟ, ๋ฌธ๋ฒ์ ์ผ๋ก ์ด๋ป๊ฒ ์ฐ๋ผ๊ณ ๊ฐ์ ํ๋ ๋ถ๋ถ์ด ์๋ค.
๊ทธ๋ฌ๋, ๋ณด๊ธฐ ์ข์ ๋ก์ด ๋ง๋ ์ข๋ค๊ณ ๊ฐ๋ ์ฑ์ด ๋ฐ์ด๋ ์ฒซ ๋ฒ์งธ ๋ฐฉ์์ผ๋ก ํ๋ ๊ฒ ๋์ ๊ฒ ๊ฐ๋ค.
์ถ์ฒ & ์ฐธ๊ณ ์ฌ์ดํธ
์ฝ๋ฉ ์์จํ์ต HTML + CSS + ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ด๋ถํฐ ๋ฐ์ํ ์น๊น์ง ์ด๋ณด์๋ฅผ ์ํ ์น ๊ฐ๋ฐ ์ ๋ฌธ์
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๋์ ์๋ฆฌ