[JS] ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ด ๋ฌธ๋ฒ ์ดํด๋ณด๊ธฐ : ๋ณ์ -2
( UPDATE 2023 - 06 - 02 )
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ปดํจํฐ(๊ธฐ๊ณ)์ ๋ช ๋ น ๋๋ ์ฐ์ฐ์ ์ํํ๊ฒ ํ ๋ชฉ์ ์ผ๋ก ์ค๊ณํ ์ธ์ด๋ก,
์ฌ๋์ด ์ปดํจํฐ์ ์์ฌ์ํตํ ์ ์๊ฒ ํ๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๊ณต๋ถํ๋ ค๋ฉด ๊ฐ ์ธ์ด์์ ์ ๊ณตํ๋ ๊ธฐ์ด ๋ฌธ๋ฒ๋ถํฐ ๋ฐฐ์์ผํ๋ค.
๊ธฐ์ด ๋ฌธ๋ฒ์ ๋ํ์ ์ธ ์๋ก ๋ณ์์ ์์, ์๋ฃํ, ์ฐ์ฐ์, ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ์์ธ ์ฒ๋ฆฌ ๋ฑ์ด ์๋ค.
์ด ๊ฐ๋ ๋ค์ ๊ผญ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์๋๋๋ผ๋ ํ์์ด ์กฐ๊ธ ๋ค๋ฅผ ๋ฟ ๋๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ณตํต์ผ๋ก ์กด์ฌํ๋ค.
๊ทธ๋ผ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ด๋ฐ ๋ฌธ๋ฒ๋ค์ ์ด๋ป๊ฒ ๋ค๋ฃจ๋์ง ๋ฐฐ์๋ณด์.
let
๋ณ์๋ฅผ ์ ์ธํ๋ ํค์๋๋ var ๋ง๊ณ ๋ let์ด ์๋ค.
let num = 10 + 20;
1. ๋ณ์๋ช ์ค๋ณต์ด ๋ถ๊ฐ๋ฅํ๋ค.
var ํค์๋๋ก ์ ์ธํ ๋ณ์๋ช ์ ์ค๋ณตํด์ ์์ฑํ ์ ์๋ค.
๊ทธ๋์ ๋ค์์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํด๋ ๋ฌธ์ ๊ฐ ์๋ค.
var num = 10+ 20;
var num = 50;
์ด๋ฏธ ์กด์ฌํ๋ ๋ณ์๋ช ์ ์ค๋ณตํด์ ์์ฑํ์ ๋ ๊ธฐ์กด ๊ฐ์ ๋ฎ์ด๋ฒ๋ฆฌ๋ ์๋ ๋ฐฉ์์ ์ฅ์ ์ฒ๋ผ ๋ณด์ผ ์ ์๋ค.
๊ทธ๋ฌ๋ ์ด๋ ํฌ๋ํฐ ์ค์ฐ์ด๋ค.
์๋ฅผ ๋ค์ด, ํ๋์ ํ๋ก์ ํธ์์ A ๊ฐ๋ฐ์๊ฐ ๋ชจ๋ ์ซ์์ ํฉ์ ์ ์ฅํ๊ธฐ ์ํด sum์ด๋ผ๋ ๋ณ์๋ช ์ ์ฌ์ฉํ๋ค๊ณ ํ์.
๊ทธ๋ฐ๋ฐ B ๊ฐ๋ฐ์๊ฐ ์ด ์ฌ์ค์ ๋ชจ๋ฅด๊ณ sum ์ด๋ผ๋ ๋ณ์๋ฅผ ๋ค์ ์ ์ธํ๊ณ ์ฌํ ๋น์ ํ๋ค.
๊ทธ๋ฌ๋ฉด A ๊ฐ๋ฐ์ ์ ์ฅ์์๋ ์์ ์ด ์ฌ์ฉํ๋ ๋ณ์๋ช sum์ด ์๋์น ์๊ฒ ๋ค๋ฅธ ์ฉ๋๋ก ๋ณ๊ฒฝ ๋์ง๋ง,
์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์์๋ ์ค๋ฅ๊ฐ ์๋๋ฏ๋ก ์๋ฌด๋ฐ ๊ฒฝ๊ณ ๋ ๋ฐ์ํ์ง ์๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด let ํค์๋๋ ๋ณ์๋ช ์ ์ค๋ณต ์ ์ธํ์ง ๋ชปํ๊ฒ ํด์ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์ ์์ ์ผ๋ก ์คํ๋์ง ์๋๋ค.
์ฝ๋๋ฅผ ์คํํ๋ฉด num ์๋ณ์๊ฐ ์ด๋ฏธ ์ ์ธ๋๋ค๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ฐ์ํ๋ค.
์ด๋ ๊ฒ ํค์๋ ์์ฒด์์ ์ค๋ณต ์ ์ธ์ ๋ถ๊ฐ๋ฅํ๊ฒ ํจ์ผ๋ก์จ
๋ค๋ฅธ ์ฌ๋์ด ์ ์ธํ ๋ณ์๋ช ์ ์ค์๋ก ์ฌ์ ์ธ ํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
2. ํธ์ด์คํ ์ด ๋์ง ์๋๋ค.
ํธ์ด์คํ (hoisting)์ ์ธํฐํ๋ฆฌํฐ๊ฐ ๋ณ์์ ํจ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ธ ์ ์ ๋ฏธ๋ฆฌ ํ ๋นํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฝ๊ฒ ๋งํ๋ฉด,
var ํค์๋๋ก ๋ณ์๋ฅผ ์ ์ธํ๊ณ ํ ๋นํ์ ๋
๋ณ์ ์ ์ธ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ค์ฝํ(scope) ๋งจ ์๋ก ์ฌ๋ ค ์คํํ๋ ๊ฒ์ ๋งํ๋ค.
์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์กฐ๊ธ ์ด์ํ๋ค.
๋ณ์๋ฅผ ์ ์ธํ๊ณ ํ ๋นํ๋ ์ด๊ธฐํ ์ ์ num์ด๋ผ๋ ๋ณ์๋ฅผ ์ถ๋ ฅํ๊ณ ์๋ค.
๋น์ฐํ ์ถ๋ ฅํ ๋๋ num ์ด๋ผ๋ ๋ณ์๊ฐ ์ ์ธ๋์ง ์์์ผ๋ฏ๋ก,
์ค๋ฅ๊ฐ ๋ฐ์ํด์ผ ๋ง์ง๋ง ์ค๋ฅ๊ฐ ์๋๋ผ 'undefined' ๋ผ๋ ๊ฐ์ ์ถ๋ ฅํ๋ค.
์ด ๋ฐฐ๊ฒฝ์๋ ํธ์ด์คํ ๊ฐ๋ ์ด ์๋ค.
์ค์ ๋ก๋ ํธ์ด์คํ ์ ์ํด ๋ค์ ์ฝ๋๊ฐ ์๋ํ๋ค.
var num = 10; //์ ์ธ์ด ์ต์์๋ก ์ฌ๋ผ์ด
console.log(num);
num = 10; //ํ ๋น์ ์๋ ์๋ฆฌ์ ์์
ํธ์ด์คํ ์ ์ํด
๋ณ์์ ์ ์ธ๊ณผ ์ด๊ธฐํ๋ฅผ ๋ถ๋ฆฌํ ํ, ์ ์ธ๋ง ์ฝ๋์ ์ต์๋จ์ผ๋ก ์ฎ๊ฒจ์ก๋ค.
๊ทธ๋์ num ์ด๋ผ๋ ๋ณ์๋ฅผ ์ถ๋ ฅํ ๋๋ ๊ฐ์ด ์์ ๋ฟ, ์ ์ธ์ ๋ ์ํ๋ผ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
๊ทธ๋ฐ๋ฐ let ํค์๋๋ ํธ์ด์คํ ์ด ์ผ์ด๋์ง ์๋๋ค.
๊ทธ๋์, ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํํ๋ฉด num ๋ณ์๊ฐ ์ ์๋์ง ์์๋ค๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
3. ์ค์ฝํ์ ๋ฒ์๊ฐ ๋ค๋ฅด๋ค.
var ํค์๋์ let ํค์๋๋ ์ฐธ์กฐํ๋ ์ค์ฝํ๊ฐ ๋ค๋ฅด๋ค.
์ด ์ฐจ์ด์ ๋๋ฌธ์ ์ค๋ฌด์์๋ let๋ง ์ฐ์!
์ฐธ๊ณ ์ฌ์ดํธ
1. let ์ฐธ๊ณ ์ฌ์ดํธ ํด๋ฆญ
2. ํธ์ด์คํ ์ฐธ๊ณ ์ฌ์ดํธ ํด๋ฆญ
์์ const
๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋ ํค์๋๋ก const๋ ์๋ค.
๊ธฐ๋ณธ ๋ด์ฉ์ let ๊ณผ ๊ฐ๋ค.
๊ทธ๋์ ๋ณ์๋ช ์ ์ค๋ณต์ผ๋ก ์ ์ธํ๋ ๊ฒ๊ณผ ํธ์ด์คํ ์ด ์๋๊ณ , ์ค์ฝํ๋ ์ฐจ์ด์ ์ด ์๋ค.
let๊ณผ ๋ค๋ฅธ์ ์ const๋ ์ฌํ ๋น์ด ์๋๋ค.
let์ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ฌํ ๋น ๊ฐ๋ฅ
const๋ ์ฌํ ๋น์ ํ ์ ์์ด์ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํจ
์ฌํ ๋น์ด ์๋๊ธฐ ๋๋ฌธ์ ์ ์ธ์ ๋จผ์ ํ๊ณ ํ ๋น์ ๋์ค์ ํ๋ ๊ฒ๋ ์๋๋ค.
(๋ค๋ง ์ด๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์์๋ผ๊ณ ๋งํ๊ธฐ๊ฐ ์ด๋ ต๋ค.)
์๋ณ์ ๋ช ๋ช ๊ท์น
๋ณ์๋ ์์๋ฅผ ์ ์ธํ๊ณ ์๋ณ์๋ฅผ ์ง์ ํ ๋ ๋ช ๊ฐ์ง ๊ท์น์ด ์๋ค.
์ด ๊ท์น์ ์ธ์ด์ ์ฐจ์์์ ๊ฐ์ ์ ์ธ ๊ฒ๋ ์๊ณ , ๊ด์ฉ์ ์ธ ๊ฒ๋ ์๋ค.
1. ๊ฐ์ ์ ์๋ณ์ ๋ช ๋ช ๊ท์น
๊ฐ์ ๊ท์น์ ์งํค์ง ์์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์์ฒด์์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํจ๋ค.
1) ์๋ณ์์ ํค์๋ ์ฌ์ฉ๋ถ๊ฐ
var, let, const
2) ์๋ณ์์ ๊ณต๋ฐฑ ํฌํจ ๋ถ๊ฐ
my School, like food
3) ์๋ณ์์ ์ฒซ ๊ธ์๋ ์๋ฌธ ์๋ฌธ์, _(์ธ๋์ค์ฝ์ด), $ ๊ธฐํธ๋ง ์ฌ์ฉ
*name, #age, @email
2. ๊ด์ฉ์ ์๋ณ์ ๋ช ๋ช ๊ท์น
์งํค์ง ์์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค์ง ์์ง๋ง, ๋๋๋ก ์งํค๋๋ก ํ์!
1) ์๋ณ์๋ ์๋ฌธ์ผ๋ก๋ง ์์ฑ
์) name, age ๋ฑ
2) ์๋ณ์๋ ์๋ฏธ ์๋ ๋จ์ด๋ก ์์ฑ
์) ์ฃผ์ adress, ์ด๋ฆ name, ๋์ด age ๋ฑ
3. ์๋ณ์ ํ๊ธฐ๋ฒ
1) ์นด๋ฉ ํ๊ธฐ๋ฒ
์ฒซ ๊ธ์๋ ์์ด ์๋ฌธ์๋ก ์์ํ๊ณ , 2๊ฐ ์ด์์ ๋จ์ด๊ฐ ์กฐํฉ๋๋ฉด ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ํ๊ธฐ.
๋ณ์๋ช ๊ณผ ํจ์๋ช ์์ฑ์ ์ฌ์ฉ.
์) firstName, lastName
2) ์ธ๋์ค์ฝ์ด ํ๊ธฐ๋ฒ
์ธ๋์ค์ฝ์ด ํ๊ธฐ๋ฒ์ 2๊ฐ ์ด์์ ๋จ์ด๊ฐ ์กฐํฉ๋ ๋, ๊ฐ ๋จ์ด๋ฅผ _ ๊ธฐํธ๋ก ์ฐ๊ฒฐํด ํ๊ธฐ.
์์์ ์๋ณ์๋ฅผ ์ง์ ๋ ์ฌ์ฉ.
์) FIRST_NAME, last_name
3)ํ์ค์นผ ํ๊ธฐ๋ฒ
๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ.
์๋ฐ์คํฌ๋ฆฝํธ์์ ์์ฑ์ ํจ์๋ช ์ ์ง์ ๋ ์ฌ์ฉ.
์) FirstName, LastName
์ถ์ฒ & ์ฐธ๊ณ ์ฌ์ดํธ
์ฝ๋ฉ ์์จํ์ต HTML + CSS + ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ด๋ถํฐ ๋ฐ์ํ ์น๊น์ง ์ด๋ณด์๋ฅผ ์ํ ์น ๊ฐ๋ฐ ์ ๋ฌธ์
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๋์ ์๋ฆฌ