[JavaScript] Scope


1. Scope

Scope

์–ด๋–ค ํ•จ์ˆ˜์˜ ๋ฐ”๊นฅ์— ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด, ํ˜„์žฌ ๋ฌธ์„œ์˜ ๋‹ค๋ฅธ ์ฝ”๋“œ์— ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์ „์—ญ ๋ณ€์ˆ˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด, ์˜ค์ง ๊ทธ ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์ง€์—ญ ๋ณ€์ˆ˜๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

ECMAScript 2015 ์ด์ „์˜ JavaScript๋Š”ย ๋ธ”๋ก ๋ฌธย ์Šค์ฝ”ํ”„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜คํžˆ๋ ค, ๋ธ”๋ก ๋‚ด์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๊ทธ ๋ธ”๋ก ๋‚ด์— ์กด์žฌํ•˜๋Š” ํ•จ์ˆ˜(ํ˜น์€ ์ „์—ญ ์Šค์ฝ”ํ”„)์— ์ง€์—ญ์ ์ž…๋‹ˆ๋‹ค.

  • ์ง€์—ญ ๋ณ€์ˆ˜ : [] ์•ˆ์— ํ•œ๋ฒˆ๋งŒ ์„ ์–ธ, ํ•ด๋‹น []์•ˆ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์ „์—ญ ๋ณ€์ˆ˜ : [] ๋ฐ–์— ํ•œ๋ฒˆ๋งŒ ์„ ์–ธ, ๋ชจ๋“ []์— ์‚ฌ์šฉ ๊ฐ€๋Šฅ

  • ์„ ์–ธ์ž ์ƒ๋žต์‹œ ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค
let num = 100;
num = 500; // ์žฌํ• ๋‹น ๊ฐ€๋Šฅ
{
   let num = 200; // ์žฌํ• ๋‹น
  console.log(num) => 200
  {
    let num = 300; // ์žฌํ• ๋‹น
    console.log(num);  => 300
    {
      let num = 400; // ์žฌํ• ๋‹น
      console.log(num) => 400
    }
    console.log(num); => 300
  }
  console.log(num); => 200
}
console.log(num); => 500