all is well!!
16. ์ค์ฝํ ๋ณธ๋ฌธ
๐ ์ค์ฝํ?
1. ์ค์ฝํ๋ ์๋ณ์๊ฐ ์ ํจํ ๋ฒ์๋ก ๋ชจ๋ ์๋ณ์(๋ณ์ ์ด๋ฆ, ํจ์ ์ด๋ฆ, ํด๋์ค ์ด๋ฆ ๋ฑ)๋ ์์ ์ด ์ ์ธ๋ ์์น์ ์ํด
๋ค๋ฅธ ์ฝ๋๊ฐ ์๋ณ์ ์์ ์ ์ฐธ์กฐํ ์ ์๋ ์ ํจ ๋ฒ์๊ฐ ๊ฒฐ์ ๋๋ค.
๋๊ฐ์ ๋ณ์x๋ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์์ง๋ง ์๋ณ์ ๊ฒฐ์ ์ผ๋ก ์์น์ ๋ฐ๋ผ ์ฐธ์กฐํ ์ ์๋ ์ ํจ ๋ฒ์๊ฐ ๋ค๋ฅด๋ค.
๋งจ์์ x๋ ์ ์ญ ์ค์ฝํ๋ก ์ด๋์๋ ์ฐธ์กฐํ ์ ์๋ค.
ํ์ง๋ง ํจ์์์ x๋ ํจ์ ๋ด๋ถ์์๋ง ์ฐธ์กฐํ ์ ์๋ค.
๊ทธ๋์ ํจ์์์ ์ฝ์x๋ local์ ๋ฐํํ๊ณ ํจ์ ๋ฐ๊นฅ์ ์ฝ์x๋ global์ ๋ฐํํ๋ค.
var x= 'global';
function foo(){
var x = 'local';
console.log(x)// 1
}
foo();
console.log(x); //2
2. ์ค์ฝํ ๋ด์์ ์๋ณ์๋ ์ ์ผํด์ผ ํ์ง๋ง ๋ค๋ฅธ ์ค์ฝํ์๋ ๊ฐ์ ์ด๋ฆ์ ์๋ณ์๋ฅผ ์ธ ์ ์๋ค.
๐ ์ค์ฝํ์ ์ข ๋ฅ
1. ์ง์ญ์์ ์ ์ธ๋ ๋ณ์๋ ์ง์ญ ์ค์ฝํ๋ฅผ ๊ฐ๋๋ค.
2. ์ ์ญ์์ ์ ์ธ๋ ๋ณ์๋ ์ ์ญ ์ค์ฝํ๋ฅผ ๊ฐ๋๋ค.
3. ์ง์ญ ์ค์ฝํ๋ ํจ์ ๋ชธ์ฒด ๋ด๋ถ ๋ฒ์๋ก ์์ ์ ์ง์ญ ์ค์ฝํ์ ํ์ ์ง์ญ ์ค์ฝํ์์ ์ ํจํ๋ค.
4. ์ ์ญ์ ์ฝ๋์ ๊ฐ์ฅ ๋ฐ๊นฅ ์์ญ์ด๊ณ ์ ์ญ ๋ณ์๋ ํจ์ ๋ด๋ถ ๋ฑ ์ด๋์๋ ์ง ์ฐธ์กฐํ ์ ์๋ค.
๐ ์ค์ฝํ ์ฒด์ธ
1. ํจ์ ๋ชธ์ฒด ๋ด๋ถ์์ ํจ์๊ฐ ์ ์๋๊ฒ์ ํจ์์ ์ค์ฒฉ์ด๋ผ๊ณ ํ๋ค.
2. ํจ์์ ์ง์ญ ์ค์ฝํ๋ ์ค์ฒฉ์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ฝํ๋ ํจ์ ์ค์ฒฉ์ ์ํด ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค.
3. ๋ชจ๋ ์ค์ฝํ๋ ํ๋์ ๊ณ์ธต ๊ตฌ์กฐ๋ก ์ฐ๊ฒฐ๋๊ณ ๋ชจ๋ ์ง์ญ ์ค์ฝํ์ ์ต์์ ์ค์ฝํ๋ ์ ์ญ ์ค์ฝํ๋ค.
4. ์ด๋ ๊ฒ ์ค์ฝํ๊ฐ ๊ณ์ธต์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ฒ์ด ์ค์ฝํ ์ฒด์ธ.
5. ๋ณ์๋ฅผ ์ฐธ์กฐํ ๋ JS์์ง์ ์ค์ฝํ ์ฒด์ธ์ ํตํด ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ ์ฝ๋์ ์ค์ฝํ์์ ์์ํด
์์ ์ค์ฝํ ๋ฐฉํฅ์ผ๋ก ์ด๋ํด ์ ์ธ๋ ๋ณ์๋ฅผ ๊ฒ์ํ๋ค.
* ํ์์ ์์ํ ๋ธ๋ก๋ฒ์์ ์ฐพ๋ ๋ณ์ ๊ฐ์ฒด๊ฐ ์์๋
* ํ์์ ์์ํ ๋ธ๋ก๋ฒ์์ ์ฐพ๋ ๋ณ์ ๊ฐ์ฒด๊ฐ ์์๋
* ํ์์ ์์ํ ๋ธ๋ก๋ฒ์์ ์์ชฝ ๋ธ๋ก ์ค์ฝํ๋ ๋ฌด์ํ์ฑ๋ก ํ์ํ๋ค.
6. JS์์ง์ ์คํํ๊ธฐ ์ ์ ๋ ์์ปฌ ํ๊ฒฝ์ ์์ฑํ๋ค.
๊ทธ๋์ ๋ณ์ ์ ์ธ์ด ์คํ๋๋ฉด ๋ณ์ ์๋ณ์๊ฐ ์๋ฃ๊ตฌ์กฐ์ ํค๋ก ๋ฑ๋ก๋๊ณ
๋ณ์ ํ ๋น์ด ์ผ์ด๋๋ฉด ์๋ฃ๊ตฌ์กฐ์ ๋ณ์ ์๋ณ์์ ํด๋นํ๋ ๊ฐ์ ๋ณ๊ฒฝํ๋ค.
๋ณ์์ ๊ฒ์๋ ์ด ์๋ฃ๊ตฌ์กฐ ์์์ ์ด๋ค์ง๋ค.
๐ ํจ์ ๋ ๋ฒจ ์ค์ฝํ
1. ์ฝ๋ ๋ธ๋ก์ด ์๋ ํจ์์ ์ํด์๋ง ์ง์ญ ์ค์ฝํ๊ฐ ์์ฑ๋๋ค.
2. var ํค์๋๋ก ์ ์ธ๋ ๋ณ์๋ ์ค๋ก์ง ํจ์์ ์ฝ๋ ๋ธ๋ก๋ง ์ง์ญ ์ค์ฝํ๋ก ์ธ์ ํ๋ค.
3. ํ์ง๋ง ES6์ ๋์ ๋ let, const๋ก ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๋ ์ง์ํ๊ฒ ๋๋ค.
๐ ๋ ์์ปฌ ์ค์ฝํ
var x = 1;
function foo(){
var x = 10;
bar();
}
function bar(){
console.log(x);
}
foo() // 1.
bar() // 2.
1. JS๋ ๋ ์์ปฌ ์ค์ฝํ๋ฅผ ๋ฐ๋ผ์ ํจ์๋ฅผ ์ด๋์ ์ ์ํ๋์ง์ ๋ฐ๋ผ ์ค์ฝํ๋ฅผ ๊ฒฐ์ ํ๋ค.
2. ํจ์๊ฐ ํธ์ถ๋ ์์น๋ ์์ ์ค์ฝํ ๊ฒฐ์ ์ ์ํฅ์ด ์๋ค.
3. ํจ์๊ฐ ํธ์ถ๋ ๋๋ง๋ค ํจ์์ ์์ ์ค์ฝํ๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํด
ํจ์ ์์ ์ค์ฝํ๋ ํจ์ ์ ์๊ฐ ์คํด๋ ๋ ์ ์ ์ผ๋ก ๊ฒฐ์ ๋๊ณ
ํจ์ ์ ์๊ฐ ์คํ๋์ ์์ฑ๋ ํจ์ ๊ฐ์ฒด๋ ๊ฒฐ์ ๋ ์์ ์ค์ฝํ๋ฅผ ๊ธฐ์ตํ๋ค.
4. ๊ทธ๋์ ์์ ์์ ๋ foo()์ bar()์ ์ถ๋ ฅ๊ฐ์ 1์ด๋ค.
'Javascript ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
18. let, const ํค์๋์ ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ (0) | 2023.07.29 |
---|---|
17. ์ ์ญ ๋ณ์์ ๋ฌธ์ ์ (0) | 2023.07.29 |
15. ๋ค์ํ JS ํจ์์ ํํ (0) | 2023.07.22 |
14. JS ํจ์ (0) | 2023.07.21 |
13. ์์ ๊ฐ๊ณผ ๊ฐ์ฒด์ ๋น๊ต (0) | 2023.07.15 |