๐ก ์ค์ฝํ ์ฒด์ธ : ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๊ณ ๊ณ์ ๋ฒ์๋ฅผ ๋ํ๋ฉด์ ์ฐพ๋ ๊ด๊ณ๋ฅผ ์ค์ฝํ ์ฒด์ธ์ด๋ผ ํ๋ค.
๐ก๋ด๋ถ ํจ์์์๋ ์ธ๋ถ ํจ์์ ๋ณ์์ ์ ๊ทผ ๊ฐ๋ฅํ์ง๋ง ์ธ๋ถ ํจ์์์๋ ๋ด๋ถ ํจ์์ ๋ณ์์ ์ ๊ทผํ ์ ์๋ค.
- ์ ์ญ๋ณ์์ ์ง์ญ๋ณ์์ ๊ด๊ณ์์ ์ค์ฝํ ์ฒด์ธ(scope chain)์ด๋ ๊ฐ๋ ์ด ๋์จ๋ค.
- ๋ด๋ถ ํจ์์์๋ ์ธ๋ถ ํจ์์ ๋ณ์์ ์ ๊ทผ ๊ฐ๋ฅํ์ง๋ง ์ธ๋ถ ํจ์์์๋ ๋ด๋ถ ํจ์์ ๋ณ์์ ์ ๊ทผํ ์ ์๋ค.
๋ชจ๋ ํจ์๋ค์ ์ ์ญ ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์๋ค.
var name = 'zero'; function outer() { console.log('์ธ๋ถ', name); // zero function inner() { var enemy = 'nero'; console.log('๋ด๋ถ', name); // zero } inner(); } outer(); console.log(enemy); // undefined
- inner ํจ์๋ name ๋ณ์๋ฅผ ์ฐพ๊ธฐ ์ํด ๋จผ์ ์๊ธฐ ์์ ์ ์ค์ฝํ์์ ์ฐพ๊ณ ,
- ์์ผ๋ฉด ํ ๋จ๊ณ ์ฌ๋ผ๊ฐ outer ์ค์ฝํ์์ ์ฐพ๊ณ , ์์ผ๋ฉด
- ๋ค์ ์ฌ๋ผ๊ฐ ๊ฒฐ๊ตญ ์ ์ญ ์ค์ฝํ์์ ์ฐพ๋๋ค.
- ์ ์ญ ์ค์ฝํ์์ name ๋ณ์๋ฅผ ์ฐพ์์ 'zero'๋ผ๋ ๊ฐ์ ์ป๋๋ค.
- ๋ง์ฝ ์ ์ญ ์ค์ฝํ์๋ ์๋ค๋ฉด ๋ณ์๋ฅผ ์ฐพ์ง ๋ชปํ์๋ค๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ ๊ฒ ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๊ณ ๊ณ์ ๋ฒ์๋ฅผ ๋ํ๋ฉด์ ์ฐพ๋ ๊ด๊ณ๋ฅผ ์ค์ฝํ ์ฒด์ธ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
'Frontend > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
for...of์ forEach ์ฐจ์ด (0) | 2024.08.06 |
---|---|
๋ ์์ปฌ ์ค์ฝํ (0) | 2024.05.08 |
ํด๋ก์ (0) | 2024.04.13 |
์คํ ์ปจํ ์คํธ (0) | 2024.03.23 |
์์ ๊ฐ๊ณผ ๊ฐ์ฒด์ ๋น๊ต (0) | 2024.03.14 |