๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
javascript/๐Ÿ“– study

[2์ฃผ์ฐจ ์Šคํ„ฐ๋””]14์žฅ-์ „์—ญ๋ณ€์ˆ˜ ๋ฌธ์ œ์ 

by HomieKim 2022. 2. 6.

์ „์—ญ ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ์ 

๋ณ€์ˆ˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ

  • ์ „์—ญ ๋ณ€์ˆ˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ๊ฐ™๋‹ค
  • ์ง€์—ญ ๋ณ€์ˆ˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ํ•จ์ˆ˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ์ผ์น˜ํ•œ๋‹ค.
  • ๋‹จ, ๋ˆ„๊ตฐ๊ฐ€ ์Šค์ฝ”ํ”„๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์œผ๋ฉด ์Šค์ฝ”ํ”„๋Š” ์†Œ๋ฉธํ•˜์ง€ ์•Š๊ณ  ์ƒ์กด (ํด๋กœ์ € ๊ฐœ๋…)
  • ํ˜ธ์ด์ŠคํŒ…์€ ์Šค์ฝ”ํ”„ ๋‹จ์œ„๋กœ ๋™์ž‘ํ•œ๋‹ค.
var x = 'global';

function foo() {

  console.log(x); // undefined
  var x = 'local';
}

foo();
console.log(x); // global

์ „์—ญ ๊ฐ์ฒด

  • ์ „์—ญ ๊ฐ์ฒด๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ ๋˜๊ธฐ ์ด์ „ ๋‹จ๊ณ„์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์˜ํ•ด ์–ด๋–ค ๊ฐ์ฒด ๋ณด๋‹ค๋„ ๋จผ์ € ์ƒ์„ฑ๋˜๋Š” ํŠน์ˆ˜ํ•œ ๊ฐ์ฒด
  • ๋ธŒ๋ผ์šฐ์ € ์—์„œ๋Š” window๊ฐ€ ์ „์—ญ๊ฐ์ฒด, node.js์—์„œ๋Š” global ์ด ์ „์—ญ๊ฐ์ฒด
  • var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ์ „์—ญ ๋ณ€์ˆ˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ๋Š” ์ „์—ญ ๊ฐ์ฒด์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ์ผ์น˜ํ•œ๋‹ค.

์ „์—ญ ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ์ 

  1. ์•”๋ฌต์  ๊ฒฐํ•ฉ
  2. ๊ธด ์ƒ๋ช… ์ฃผ๊ธฐ
  3. ์Šค์ฝ”ํ”„ ์ฒด์ธ ์ƒ์—์„œ ์ข…์ ์— ์กด์žฌ

    ์ „์—ญ ๋ณ€์ˆ˜์˜ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๊ฐ€์žฅ ๋Š๋ฆฌ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ

  4. ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์˜ค์—ผ

    ํŒŒ์ผ์ด ๋ถ„๋ฆฌ ๋˜์–ด์žˆ์–ด๋„ ์ „์—ญ ์Šค์ฝ”ํ”„๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ „์šฉ ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์–ต์ œ

  • ์ง€์—ญ ๋ณ€์ˆ˜ ์‚ฌ์šฉ ๊ถŒ์žฅ, ์Šค์ฝ”ํ”„๋Š” ์ข์„ ์ˆ˜๋ก ์ข‹๋‹ค.
  1. ์ฆ‰์‹œ์‹คํ–‰ ํ•จ์ˆ˜
  • ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๋กœ ๊ฐ์‹ธ๋ฉด ๋ชจ๋“  ๋ณ€์ˆ˜๋Š” ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜์˜ ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.
(function () {
  var foo = 10; // ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜์˜ ์ง€์—ญ ๋ณ€์ˆ˜
  // ...
}());

console.log(foo); // ReferenceError: foo is not defined
  1. ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ฐ์ฒด
  • ์ „์—ญ์— ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์—ญํ• ์„ ๋‹ด๋‹นํ•  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ „์—ญ๋ณ€์ˆ˜ ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๋ณ€์ˆ˜๋ฅผ ํ”„๋กœํผํ‹ฐ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•
  1. ๋ชจ๋“ˆ ํŒจํ„ด
  • ๊ด€๋ จ ์žˆ๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ๋ชจ์•„์„œ ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๋กœ ๊ฐ์‹ธ ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
  • ํด๋กœ์ € ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘
  • ์ •๋ณด ์€๋‹‰์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  1. es6 ๋ชจ๋“ˆ
  • es6 ๋ชจ๋“ˆ์€ ํŒŒ์ผ ์ž์ฒด์˜ ๋…์ž์ ์ธ ๋ชจ๋“ˆ ์Šค์ฝ”ํ”„๋ฅผ ์ œ๊ณต
  • script ํƒœ๊ทธ์— type=module ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ชจ๋“ˆ๋กœ ๋™์ž‘

๋Œ“๊ธ€