[TIL] ์Šค์ฝ”ํ”„(Scope)๐Ÿ˜ฒ

๊น€์œคํ˜œยท2022๋…„ 11์›” 7์ผ
0

์Šค์ฝ”ํ”„(Scope); ๋ณ€์ˆ˜์˜ ์œ ํšจ๋ฒ”์œ„

Rule

  • ๋ฐ”๊นฅ ์Šค์ฝ”ํ”„๋Š” ์•ˆ์ชฝ ์Šค์ฝ”ํ”„์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค.
  • ๊ฐ€์žฅ ๋ฐ”๊นฅ์ชฝ ์Šค์ฝ”ํ”„; Global scope | ๊ทธ ์™ธ ์Šค์ฝ”ํ”„; Local scope
  • ์ง€์—ญ ์Šค์ฝ”ํ”„์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’๋‹ค.

์Šค์ฝ”ํ”„ ์ข…๋ฅ˜

  • ๋ธ”๋ก ์Šค์ฝ”ํ”„(block scope); ์ค‘๊ด„ํ˜ธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฒ”์œ„๊ตฌ๋ถ„, ํ™”์‚ดํ‘œ ํ•จ์ˆ˜
  • ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„(function scope); function ํ‚ค์›Œ๋“œ๊ฐ€ ๋“ฑ์žฅํ•˜๋Š” ํ•จ์ˆ˜ ์„ ์–ธ์‹ ๋ฐ ํ•จ์ˆ˜ ํ‘œํ˜„์‹

๋ณ€์ˆ˜์™€ ์Šค์ฝ”ํ”„

  • 3๊ฐ€์ง€ ๋ณ€์ˆ˜์˜ ํŠน์ง•
letconstvar
์œ ํšจ๋ฒ”์œ„๋ธ”๋ก/ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„๋ธ”๋ก/ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„
๊ฐ’ ์žฌํ• ๋‹น๊ฐ€๋Šฅ๋ถˆ๊ฐ€๋Šฅ๊ฐ€๋Šฅ
์žฌ์„ ์–ธ๋ถˆ๊ฐ€๋Šฅ๋ถˆ๊ฐ€๋Šฅ๊ฐ€๋Šฅ

** var: ๋ธ”๋ก ์Šค์ฝ”ํ”„ ๋ฌด์‹œ(ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์ œ์™ธ), ๋ธ”๋ก ๋ฐ”๊นฅ์—์„œ๋„ ๋ณ€์ˆ˜ var์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Œ(๋น„์ถ”์ฒœ)

  • ํ€ด์ฆˆ
let name = '๊น€์ฝ”๋”ฉ';

function showName() {
  name = '๋ฐ•ํ•ด์ปค';
  console.log(name); // ๋ฐ•ํ•ด์ปค;
}

console.log(name); // ๊น€์ฝ”๋”ฉ;
showName();
console.log(name); // ๋ฐ•ํ•ด์ปค;

ํ—ท๊ฐˆ๋ฆฐ ํ€ด์ฆˆ. ํ•จ์ˆ˜ showName์•ˆ์— ๋ณ€์ˆ˜ name์˜ ์„ ์–ธ์ด ์—†๋‹ค. ๋”ฐ๋ผ์„œ line3์€ ๋ณ€์ˆ˜ name์˜ ์žฌํ• ๋‹น์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ console.log(name);์€ ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ์˜ name์„ ์ถœ๋ ฅํ•˜๊ณ , ํ•จ์ˆ˜ ์‹คํ–‰ ํ›„ console.log(name);์€ ๋ณ€์ˆ˜ name์— ์žฌํ• ๋‹น ๋œ ๋ฐ•ํ•ด์ปค๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
โœ… ํ•จ์ˆ˜ ๋‚ด์—์„œ ์„ ์–ธ ํ‚ค์›Œ๋“œ ์—†๋Š” ์„ ์–ธ์€, ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ „๊นŒ์ง€๋Š” ์„ ์–ธ๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰

** ๋งŒ์•ฝ ํ•จ์ˆ˜ ์•ˆ์—์„œ let name = '๋ฐ•ํ•ด์ปค'; ์ด๋ ‡๊ฒŒ ์„ ์–ธํ•œ๋‹ค๋ฉด ๋งˆ์ง€๋ง‰ ์ฝ˜์†”๋กœ๊ทธ ๋„ค์ž„์€ ์ „์—ญ ์Šค์ฝ”ํ”„์— ์žˆ๋Š” ์ฝ˜์†”๋กœ๊ทธ๋กœ, ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•œ ์ง€์—ญ ์Šค์ฝ”ํ”„์˜ ๋ณ€์ˆ˜๋ฅผ ๋Œ์–ด์˜ฌ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ์ „์—ญ ์Šค์ฝ”ํ”„์˜ ๋ณ€์ˆ˜ name์˜ ๋ฐ์ดํ„ฐ ๊น€์ฝ”๋”ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.

  • window ๊ฐ์ฒด(๋ธŒ๋ผ์šฐ์ € only)

    • ์ „์—ญ ์˜์—ญ์„ ๋‹ด๊ณ ์žˆ๋Š” ๊ฐ์ฒด. ํ•จ์ˆ˜ ์„ ์–ธ์‹, var๋กœ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๋ฉด window ๊ฐ์ฒด์— ๋‹ด๊น€
    • ์ „์—ญ ๋ณ€์ˆ˜๋Š” ๊ฐ€์žฅ ๋ฐ”๊นฅ ์Šค์ฝ”ํ”„์˜ ๋ณ€์ˆ˜, ์–ด๋””์„œ๋“  ์ ‘๊ทผ ๊ฐ€๋Šฅ
    • ์„ ์–ธ ์—†์ด ๋ณ€์ˆ˜๋ฅผ ํ• ๋‹นํ•˜๋ฉด var๋กœ ์ง€์ •๋˜์–ด ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์ทจ๊ธ‰, ์‚ฌ์šฉ๐Ÿšซ
    • jsํŒŒ์ผ ์ƒ๋‹จ์— 'use strict'๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์„ ์–ธ ์—†์ด ๋ณ€์ˆ˜๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†์Œ(์—๋Ÿฌ)
profile
๋ณธ์งˆ์—๋Š” ์ผ์น˜๋ฅผ, ๋น„๋ณธ์งˆ์—๋Š” ๊ด€์šฉ์„, ์ด ๋ชจ๋“  ๊ฒƒ์— ์‚ฌ๋ž‘์„

0๊ฐœ์˜ ๋Œ“๊ธ€