23์žฅ. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ(LexicalEnvironment์™€ VariableEnvironment)

2025. 5. 20. 11:46ยท๐Ÿ“™ ๋ชจ๋”ฅ๋‹ค

๋ชจ๋”ฅ๋‹ค

 

โœ… ์‹คํ–‰ ์ปจํ…์ŠคํŠธ


์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ JavaScript ์—”์ง„์€ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ, ๊ฑฐ๊ธฐ์— ์ด ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.
์ด ์ •๋ณด์—๋Š” this, ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ์„ ์–ธ, ์™ธ๋ถ€ ํ™˜๊ฒฝ ์ •๋ณด ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” LexicalEnvironment ์ปดํฌ๋„ŒํŠธ์™€ VariableEnvironment ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

 

โœ… LexicalEnvironment vs VariableEnvironment


LexicalEnvironment (ํ˜„์žฌ๋Š” ์ด๊ฒƒ๋งŒ ์“ฐ์ž„)

  • ๋ง ๊ทธ๋Œ€๋กœ "์–ดํœ˜์  ํ™˜๊ฒฝ".
    => ์ฝ”๋“œ๊ฐ€ ์„ ์–ธ๋œ ์œ„์น˜์— ๋”ฐ๋ผ ์–ด๋–ค ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฒฐ์ •.
  • ๋ณ€์ˆ˜์˜ ์„ ์–ธ๊ณผ ์‹๋ณ„์ž ๊ฒ€์ƒ‰์„ ๋‹ด๋‹น.
  • ํ•จ์ˆ˜ ์„ ์–ธ, ๋ณ€์ˆ˜ ์„ ์–ธ, let, const ๋“ฑ์ด ์ด ์•ˆ์— ์ €์žฅ๋จ.

VariableEnvironment

  • ๊ณผ๊ฑฐ์—๋Š” var๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ์—ฌ๊ธฐ์— ๋”ฐ๋กœ ์ €์žฅํ–ˆ์—ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ var๋„ LexicalEnvironment์— ํ†ตํ•ฉ๋ผ์„œ ๊ด€๋ฆฌ๋จ.
    (์ฆ‰, VariableEnvironment๋Š” ๊ณผ๊ฑฐ ํ˜ธํ™˜์„ฑ ๋•Œ๋ฌธ์— ์กด์žฌ๋งŒ ํ•˜๋Š” ์ƒํƒœ)

 

โœ… ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์˜ ๊ตฌ์„ฑ ์ปดํฌ๋„ŒํŠธ


1. Environment Record (ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ)

  • ํ˜„์žฌ ์ปจํ…์ŠคํŠธ์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜/ํ•จ์ˆ˜๋“ค์„ ์‹ค์ œ๋กœ ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด์•ผ.
  • ๋”ฑ ์ด ์ปจํ…์ŠคํŠธ ์•ˆ์—์„œ ์„ ์–ธ๋œ ์‹๋ณ„์ž๋“ค๋งŒ ๋“ค์–ด ์žˆ์Œ.

2. Outer Lexical Environment Reference (์™ธ๋ถ€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ฐธ์กฐ)

  • ํ˜„์žฌ ํ™˜๊ฒฝ์—์„œ ์ฐพ์ง€ ๋ชปํ•œ ์‹๋ณ„์ž๋ฅผ ์™ธ๋ถ€์—์„œ ์ฐพ๊ธฐ ์œ„ํ•ด ์—ฐ๊ฒฐ๋˜๋Š” ๋งํฌ.
  • ๋ถ€๋ชจ ์ปจํ…์ŠคํŠธ(์ƒ์œ„ ์Šค์ฝ”ํ”„)์˜ LexicalEnvironment๋ฅผ ๊ฐ€๋ฆฌํ‚ด.

 

โœ… ์ •๋ฆฌ


๐Ÿง  ๋น„์œ ๋กœ ์ •๋ฆฌํ•ด๋ณด์ž:

  • LexicalEnvironment = ํ˜„์žฌ ๋ฐฉ
  • Environment Record = ๋‚ด ๋ฐฉ ์•ˆ์— ์žˆ๋Š” ๋ฌผ๊ฑด(๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋“ฑ)
  • OuterLexicalEnvironmentReference = ๋‚ด๊ฐ€ ์—†๋Š” ๊ฑด ์˜† ๋ฐฉ์—์„œ ์ฐพ์•„๋ณด๋ผ๋Š” ๋ฌธ

'๐Ÿ“™ ๋ชจ๋”ฅ๋‹ค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

31์žฅ. RegExp(์ •๊ทœ ํ‘œํ˜„์‹)  (3) 2025.08.27
19์žฅ. prototype๊ณผ __proto__์˜ ์ฐจ์ด?  (0) 2025.05.06
17์žฅ. ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์˜ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ  (0) 2025.02.28
16์žฅ. ํ”„๋กœํผํ‹ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ  (0) 2025.02.28
'๐Ÿ“™ ๋ชจ๋”ฅ๋‹ค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • 31์žฅ. RegExp(์ •๊ทœ ํ‘œํ˜„์‹)
  • 19์žฅ. prototype๊ณผ __proto__์˜ ์ฐจ์ด?
  • 17์žฅ. ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์˜ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ
  • 16์žฅ. ํ”„๋กœํผํ‹ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ
j2yonghwa
j2yonghwa
Trying to be a fullstack developer ๐Ÿš€
  • j2yonghwa
    j2yonghwa
    j2yonghwa
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (156)
      • โฐ Daily WakaTime (1)
      • ๐Ÿ–๏ธ ๋…ธ๋งˆ๋“œ์ฝ”๋” (2)
      • ๐Ÿบ Dev Setup (3)
      • ๐Ÿ”ญ Tech Info (1)
      • ๐Ÿšซ Error (1)
      • ๐Ÿ“‚ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (23)
      • ♣๏ธ Next.js 14 (10)
      • ♠๏ธ Next.js 12 (20)
      • ๐Ÿ›ธ React Native (12)
      • ๐Ÿฆ‹ TypeScript (1)
      • ๐Ÿ Python (2)
      • ๐ŸŒŠ TailwindCSS (4)
      • ๐Ÿงฉ SQL (25)
      • ๐Ÿ’Ž Prisma (5)
      • ๐ŸŒฑ MongoDB (4)
      • ๐ŸŽฏ Redis (1)
      • ๐Ÿงฌ GraphQL (2)
      • ๐Ÿ”ฅ Firebase (7)
      • ๐Ÿ’ธ Third-Party Services (2)
      • ๐Ÿ•ธ๏ธ Web (1)
      • ๐Ÿ† ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (23)
      • ๐Ÿ“™ ๋ชจ๋”ฅ๋‹ค (5)
      • ๐Ÿ“— ์ฝ”ํ…Œ ํ•ฉ๊ฒฉ์ž ๋˜๊ธฐ -JS- (0)
      • ๐Ÿ“˜ ํด๋ฆฐ์ฝ”๋“œ (0)
      • ๐Ÿฏ ๊ฟ€ํŒ ๐Ÿ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • ๊นƒํ—™
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    0๋ ˆ๋ฒจ
    Prisma
    next.js 14
    Next.js
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ž…๋ฌธ
    MySQL
    Firebase
    ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    API
    mongoDB
    react router
    Python
    SQL
    PostgreSQL
    dev setup
    next.js 12
    tailwindcss
    ๋ชจ๋”ฅ๋‹ค
    React Native
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
j2yonghwa
23์žฅ. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ(LexicalEnvironment์™€ VariableEnvironment)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”