all is well!!

16. ์Šค์ฝ”ํ”„ ๋ณธ๋ฌธ

Javascript ๊ณต๋ถ€

16. ์Šค์ฝ”ํ”„

tnqlscho 95 2023. 7. 22. 12:41

๐Ÿ‘€  ์Šค์ฝ”ํ”„?

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์ด๋‹ค. 

 

 

Comments