๋จ์๊ฐ์ ๋ง์ ์ ๋ณด๋ฅผ ๋ฃ์ผ๋ ค๊ณ ํ๋ ์คํ๋ ค ์ง์คํ๊ธฐ ์ด๋ ค์ ๋ค.
์ด๋ฒ ํ์ต์ ์ค์ฝํ
, ํด๋ก์
๊ทธ๋ฆฌ๊ณ ๊ธฐํ ๋ฌธ๋ฒ์ ๋ํด ๋ฐฐ์ ๋ค.
๋ง์ง๋ง ๋ผ์ด๋ธ ์ธ์
์์ ๋ธ๋ก๊ทธ ์์ฑ๋ฒ ๋ฑ์ ์ค๋ช
ํ๋ฉด์
๋๋ ์กฐ๊ธ ์ฉ ๋ณ๊ฒฝํด ๋ณด๋ ค๊ณ ํ๋ค.
ํ์ดํ ํจ์
๋ก ๋๋ฌ์ธ์ฌ ์๋ ๋ฒ์๋ block scope์ ์ ์ค์ฝํ(Static scope, Lexical scope)
ํจ์๋ ํ ๋ฒ๋ง ์ ์ํ ์ ์๋ค. ์ ์๋๋ฉด ๋ค๋ฅธ๊ณณ์ ๋ ์ ์ํ ํ์๊ฐ ์๋ค.
strict mode
๋ธ๋ผ์ฐ์ ๋ณด๋ค ์๊ฒฉํ๊ฒ ์๋ํ๋๋ก ๋ง๋ค์ด ์ค๋ค.
"์ ์ธ ์๋ ๋ณ์ ํ ๋น"์ ๊ฒฝ์ฐ strict mode๋ ์๋ฌ๋ก ํ๋จ.
(js ํ์ผ ์๋จ์ ์ ๋ ฅ'strict mode'
)
...
์ ๋ถ์ฌ ์ค๋ค.const num = [1,2,3];
const newNum = [...num];
console.log(numNum); // 1,2,3
//arrow function
const a = (x) => {
์คํ ์ฝ๋
}
//ํจ์ ํํ์
function a(x){
์คํ ์ฝ๋
}
๋งค๊ฐ ๋ณ์๊ฐ ํ๋ ์ผ ๋ (
,)
์๋ต์ด ๊ฐ๋ฅํ๋ค.
const a = (x) => {
์คํ ์ฝ๋
}
const a = x => {}
// ๋จ, ๋งค๊ฐ ๋ณ์๊ฐ 2๊ฐ ์ผ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ฉด ์๋๋ค.
์ค์ฝํ, ํด๋ก์ ๋ถ๋ถ์ ์ธ์ธํ๊ฒ ๋ฐฐ์ธ ์๋ก ์ด๋ ค์ ์ง ๊ฑฐ ๊ฐ๋ค.
๋จธ๋ฆฟ ์์ผ๋ก ์ดํด ํด๋ ๋ง๋ก ์ค๋ช
ํ๊ธฐ ์ด๋ ต๋ค. ์ข ๋ ๊ฐ๊ฒ ํ๊ณ ๋ค๋ฉด
์ปค๋ง, ๋ชจ๋ํจํด๋ ์๋ค. ์ด๋ถ๋ถ๋ ์ถํ ๋ค์ ์์๋ณผ๊นํ๋ค.
์ด๋ฒ ๋ผ์ด๋ธ ์ธ์
๋ง์ง๋ง์๋ ๋ฅ ํ ํฌ ํ๊ณ ๋ผ๊ณ ๋ค๋ฅธ ์๊ฐ์๋ถ๋ค๊ณผ
์ด์ผ๊ธฐ ํ๋ ์๊ฐ์ ๊ฐ์ก๋ค. ๋๋ถ์ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ด๋ค ์๊ฐํ๊ณ ์๋์ง,
์ด๋ค ๊ณ ๋ฏผํ๊ณ ์๋์ง ์ ์ ์์๋ ์์คํ ์๊ฑด์ด์๋ค.
๋งค์ฃผ ๊ธ์์ผ ๋ง๋ค ์คํฐ๋๋ ์งํํ๋ค.
์๋ก ๊ณต๋ถํ๋ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ด๋ค ํ ๋ถ๋ถ์ ๋ํด ๊ณต๋ถํ๋์ง ๋ฐํํ๋ ์๊ฐ๋ ๊ฐ์ก๋ค.
์คํ๋ผ์ธ์ด ์๋ ์จ๋ผ์ธ์ผ๋ก ๋งํ๋ ค๊ณ ํ๋์๊ฐ ๋ณด๋ค ๋ ๊ธด์ฅํ๋ ๊ฑฐ ๊ฐ๋ค.
์คํฐ๋๋ฅผ ํตํด ๋งํ๊ธฐ ๋ฅ๋ ฅ๋ ๊ธฐ๋ฅด๊ณ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ์๊ธฐํ๋ฉด์ ์ปค๋ฎค๋์ผ์ด์
๋ ๋๋ฆด ์ ์์ ๊ฑฐ ๊ฐ๋ค.