์Šค์ฝ”ํ”„์™€ ํ˜ธ์ด์ŠคํŒ… ํŒŒํ—ค์น˜๊ธฐ

2025. 8. 23. 12:28ใ†Front-end/JavaScript

๋ฐ˜์‘ํ˜•

๋ชฉ์ฐจ

1. ์Šค์ฝ”ํ”„ (Scope)

    1-1. ์Šค์ฝ”ํ”„๋ž€

    1-2. ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„

    1-3. ์Šค์ฝ”ํ”„ ์ฒด์ธ

2. ํ˜ธ์ด์ŠคํŒ… (Hoisting)

3. JS์—”์ง„์ด ์Šค์ฝ”ํ”„์™€ ํ˜ธ์ด์ŠคํŒ…์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹

    3-1. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ๊ตฌ์กฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณด๊ธฐ

    3-2. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์—์„œ

    3-3. ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์—์„œ

    3-4. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ + ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ํ•จ๊ป˜ ๋ณด๊ธฐ

 

 

1. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ๊ตฌ์กฐ ๊ฐ„๋‹จํ•˜๊ฒŒ

2. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์—์„œ

3. ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์—์„œ

4. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ + ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ํ•จ๊ป˜ ๋ณด๊ธฐ


1. ์Šค์ฝ”ํ”„ (Scope)

1. ์Šค์ฝ”ํ”„๋ž€

์Šค์ฝ”ํ”„๋Š” ๋ณ€์ˆ˜๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„์ด๋‹ค.

 

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

  • ์ „์—ญ ์Šค์ฝ”ํ”„ (global scope)
    ํ•จ์ˆ˜ ๋ฐ”๊นฅ/ ์ตœ์ƒ์œ„์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋กœ, ์–ด๋””์„œ๋“  ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.
    ์ „์—ญ ์˜ค์—ผ ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„ (function scope)
    function ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•˜๋‹ค.
  • ๋ธ”๋ก ์Šค์ฝ”ํ”„ (block scope)
    { }์ค‘๊ด„ํ˜ธ ๋ธ”๋ก ๋‹จ์œ„๋กœ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•œ๋‹ค.

 

2. ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„

JS์—์„œ ์Šค์ฝ”ํ”„๋Š” ๋ณ€์ˆ˜/ํ•จ์ˆ˜๋ฅผ ์–ด๋””์— ์ž‘์„ฑํ•˜์˜€๋Š”๊ฐ€์— ๊ธฐ์ดˆํ•˜์—ฌ ๊ฒฐ์ •๋œ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

function foo() {
  var a = 1;
  function bar(b) {
    console.log(a, b);
  }
  bar(2);
}

foo();	// ์ „์—ญ ์Šค์ฝ”ํ”„๋Š” ํ•˜์œ„ ์Šค์ฝ”ํ”„์ธ foo() ๋ฒ”์œ„ ๋‚ด์˜ ๋ณ€์ˆ˜ a์— ์ ‘๊ทผ ๋ถˆ๊ฐ€

์œ„ ์˜ˆ์‹œ ์ฝ”๋“œ์—์„œ ์ด ์„ธ ๊ฐœ์˜ ์Šค์ฝ”ํ”„๊ฐ€ ์ค‘์ฒฉ๋˜์–ด ์žˆ๋‹ค.

  • ์ „์—ญ ์Šค์ฝ”ํ”„ : foo()
  • foo() ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„ : var a, function bar(b), bar(2)
  • bar() ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„ : console.log(a, b)

์Šค์ฝ”ํ”„๋Š” ์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜๋ฅผ ์–ด๋””์—์„œ ์ž‘์„ฑํ–ˆ๋А๋ƒ์— ๋”ฐ๋ผ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.

 

3. ์Šค์ฝ”ํ”„ ์ฒด์ธ

  • ๋ณ€์ˆ˜๋ฅผ ์ฐพ์„ ๋•Œ ํ˜„์žฌ ์Šค์ฝ”ํ”„ → ์ƒ์œ„ ์Šค์ฝ”ํ”„ → ์ „์—ญ ์Šค์ฝ”ํ”„ ์ˆœ์œผ๋กœ ํƒ์ƒ‰
  • JS๋Š” ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„(Lexical Scope) → ํ•จ์ˆ˜ ์ •์˜๋œ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์Šค์ฝ”ํ”„๊ฐ€ ๊ฒฐ์ •๋จ

2. ํ˜ธ์ด์ŠคํŒ… (Hoisting)

JS ์—”์ง„์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „, ๋ณ€์ˆ˜/ํ•จ์ˆ˜์˜ ์„ ์–ธ์„ ์Šค์ฝ”ํ”„ ๋‚ด์˜ ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๋™์ž‘์˜ ๊ฐœ๋…์ด๋‹ค.

console.log(a);	// undefined
var a = 1;

์˜ˆ์‹œ ์ฝ”๋“œ์—์„œ a๊ฐ€ ์„ ์–ธ๋˜๊ธฐ ์ „์— a๋ฅผ ์ฐธ์กฐํ–ˆ์œผ๋‚˜, ์—๋Ÿฌ๊ฐ€ ์•„๋‹Œ undefined๋กœ ์ •์ƒ ์‹คํ–‰๋œ๋‹ค.

 

์„ ์–ธ๋ฌธ var a = 1;์ด ์ „์—ญ ์Šค์ฝ”ํ”„ ๋‚ด์—์„œ ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์กŒ๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.

 

ํ˜ธ์ด์ŠคํŒ…์€ ์„ธ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค.

  1. ์„ ์–ธ : JS์—”์ง„์ด ์Šค์ฝ”ํ”„์— ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ
  2. ์ดˆ๊ธฐํ™” : ๋ณ€์ˆ˜์˜ ๊ฐ’์„ undefined๋กœ ์ดˆ๊ธฐํ™”
  3. ํ• ๋‹น : ํ• ๋‹น๋ฌธ์„ ๋งŒ๋‚˜๋ฉด ๋ณ€์ˆ˜์— ์‹ค์ œ๊ฐ’์„ ํ• ๋‹น

 

์ด ๋•Œ var ๋ณ€์ˆ˜๋Š” 1, 2๋‹จ๊ณ„๋ฅผ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ ์–ธ ์ „์—๋„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜์ง€๋งŒ let, const ๋ณ€์ˆ˜๋Š” 1,2๋‹จ๊ณ„๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด, ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ ์ „์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.

console.log(a);	// Uncaught ReferenceError: a is not defined
let a = 1;

 

๋ณ€์ˆ˜
ํ˜ธ์ด์ŠคํŒ…
var ๋ณ€์ˆ˜ ์„ ์–ธ ํ˜ธ์ด์ŠคํŒ…๊ณผ ๋™์‹œ์—
undefined๋กœ ์ดˆ๊ธฐํ™”
console.log(a);    // undefined
var a = 1;
let ์„ ์–ธ๋งŒ ํ˜ธ์ด์ŠคํŒ…๋˜๊ณ  TDZ์— ๋“ค์–ด๊ฐ€ 
์„ ์–ธ ์ „ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€
console.log(a);    // a is not defined
let a = 1;
const console.log(a);    // a is not defined
const a = 1;
ํ•จ์ˆ˜
ํ˜ธ์ด์ŠคํŒ…
ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ
function foo() {...}
์„ ์–ธ๋ฌธ ์ „์ฒด๊ฐ€ ํ˜ธ์ด์ŠคํŒ…๋˜์–ด
์„ ์–ธ ์ „์—๋„ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅ
foo();  // ํ•จ์ˆ˜๊ฐ€ ์ž˜ ๋™์ž‘ํ•จ
function foo() { console.log('hello'); };
ํ•จ์ˆ˜ ํ‘œํ˜„์‹
const foo = function() {...}
๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ… ๊ทœ์น™์„ ๋”ฐ๋ฆ„ foo();  // Uncaught TypeError: foo is not a function
var foo = function() {...};

foo();  // Cannot access 'foo' before initialization
let foo = function() {...};

 

** TDZ : Temporal Dead Zone์˜ ์•ฝ์ž๋กœ, ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜๊ธฐ ์ „๊นŒ์ง€ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฐœ๋…์  ๊ตฌ๊ฐ„

 

 


2. JS์—”์ง„์ด ์Šค์ฝ”ํ”„์™€ ํ˜ธ์ด์ŠคํŒ…์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹

JS์—”์ง„์ด ์Šค์ฝ”ํ”„์™€ ํ˜ธ์ด์ŠคํŒ…์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ๊ฐœ๋…๋ณ„๋กœ ๋‚˜๋ˆ„์–ด์„œ ์•Œ์•„๋ณด์ž.

 

1. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ๊ตฌ์กฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณด๊ธฐ

ECMAScript์—์„œ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์ด๋Ÿฐ์‹์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

Execution Context
 โ”œโ”€ Lexical Environment
 โ”‚   โ”œโ”€ Environment Record (๋ณ€์ˆ˜/ํ•จ์ˆ˜ ์‹ค์ œ ๊ธฐ๋ก)
 โ”‚   โ””โ”€ Outer Reference (์ƒ์œ„ ์Šค์ฝ”ํ”„ ์—ฐ๊ฒฐ)
 โ””โ”€ Variable Environment (var ์ „์šฉ, ํ˜ธ์ด์ŠคํŒ… ๊ด€๋ฆฌ)

 

์‹คํ–‰ ์ปจํ…์ŠคํŠธ(EC)๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ์„ ์˜๋ฏธํ•˜๋ฉฐ, ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€ ์ •๋ณด๋ฅผ ๋‹ด๋Š”๋‹ค.

  • Variable Environbment (๋ณ€์ˆ˜ ํ™˜๊ฒฝ)
  • Lexical Environment (๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ)
  • This ๋ฐ”์ธ๋”ฉ

๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ฉด JS์—”์ง„์€ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ,

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

 

ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ๋Š” ์‹๋ณ„์ž(indentifier) - ๊ฐ’(value) ๋งคํ•‘์„ ์ €์žฅํ•˜๋Š” ๋‚ด๋ถ€ ๊ตฌ์กฐ์ฒด๋กœ,

์„ ์–ธํ•˜๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋“ฑ์˜ ์ด๋ฆ„๊ณผ ๊ฐ’์„ ๊ธฐ์–ตํ•œ๋‹ค.

let a = 1;

1. ์ฝ”๋“œ (let a = 1;) ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰

2. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์ƒ์„ฑ

    2-1. ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ์— let a์˜ ์‹๋ณ„์ž์™€ ๊ฐ’(1)์ด ๋งคํ•‘๋จ

    2-2. let a์˜ ๊ฐ’ 1์€ Lexcial Environment์˜ Environment Record ์˜์—ญ์— ๊ธฐ๋ก๋จ

3. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์‹คํ–‰

4. ์ฝ”๋“œ๋ฅผ ํ•œ์ค„์”ฉ ์ฝ์œผ๋ฉฐ ์ž‘์—…์„ ์ง„ํ–‰

 

 

2. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์—์„œ

JS ์—”์ง„์€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ผ๋Š” ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๋Š”๋ฐ, ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ์ฒ˜๋ฆฌ๋Š” ํฌ๊ฒŒ 2๋‹จ๊ณ„๋กœ ๋‚˜๋‰œ๋‹ค.

  • ์ƒ์„ฑ ๋‹จ๊ณ„ (Creation Phase)
    • ์Šค์ฝ”ํ”„(ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ)์™€ ๋ณ€์ˆ˜๋“ค์ด ๋จผ์ € ์„ค์ •๋จ (ํ˜ธ์ด์ŠคํŒ… ๋ฐœ์ƒ ๊ตฌ๊ฐ„)
    • var ๋ณ€์ˆ˜๋Š” undefined๋กœ ์ดˆ๊ธฐํ™”
    • let, const๋Š” ์•„์ง ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ(์„ ์–ธ๋งŒ ๋œ ์ƒํƒœ)๋กœ, TDZ์— ๋“ค์–ด๊ฐ
    • ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ ํ•จ์ˆ˜ ๊ฐ์ฒด ์ „์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋จ
  • ์‹คํ–‰ ๋‹จ๊ณ„ (Execution Phase)
    • ์ฝ”๋“œ๊ฐ€ ํ•œ ์ค„์”ฉ ์‹คํ–‰๋˜๋ฉฐ ๋ณ€์ˆ˜์— ์‹ค์ œ ๊ฐ’์ด ํ• ๋‹น๋จ
    • ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์ƒˆ๋กœ์šด ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ ์ฝœ ์Šคํƒ์— ๋“ค์–ด๊ฐ(push)

 

3. ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์—์„œ

๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์ ˆํ•˜๊ฒŒ ํ• ๋‹นํ•˜๋ฉฐ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๋ธŒ๋ผ์šฐ์ €์˜ JS์—”์ง„์€ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๊ฐ€ ์ฝœ ์Šคํƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์‹์ด๋‹ค.

  • ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ
    • ์‹คํ–‰ ์ปจํ…์ŠคํŠธ(= ์Šค์ฝ”ํ”„ ํ™˜๊ฒฝ)๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ด ๋œ๋‹ค.
    • ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์Šคํƒ์— push๋˜๊ณ , ์ข…๋ฃŒ ์‹œ popํ•œ๋‹ค.
  • ํž™ ๋ฉ”๋ชจ๋ฆฌ
    • ์ฐธ์กฐ ํƒ€์ž…(Object, Array, Function ๋“ฑ)์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ด๋‹ค.
    • ์‹ค์ œ ๊ฐ’๋“ค์„ ์ €์žฅํ•˜์—ฌ, [์Šคํƒ์— ์ €์žฅ๋œ - ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์•ˆ์˜ - ๋ณ€์ˆ˜]๋“ค์€ ํž™์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค.
  • ์ฝœ ์Šคํƒ
    • ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.
    • ์ฝ”๋“œ ์‹คํ–‰ ์ˆœ์„œ(ํ˜ธ์ถœ๊ณผ ์ข…๋ฃŒ)๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค.

 

4. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ + ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ํ•จ๊ป˜ ๋ณด๊ธฐ

์‹ค์ œ๋กœ ๋ณ€์ˆ˜(var, let, const)์™€ ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ–ˆ์„ ๋•Œ ์Šค์ฝ”ํ”„๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๊ณ  ํ˜ธ์ด์ŠคํŒ…์ด ์–ด๋–ป๊ฒŒ ์ผ์–ด๋‚˜๋Š”์ง€ ๊ณผ์ •์„ ์‚ดํŽด๋ณด์ž.

console.log(x);   // undefined (ํ˜ธ์ด์ŠคํŒ…์œผ๋กœ var ์„ ์–ธ๋งŒ ์œ„๋กœ)
console.log(y);   // ReferenceError (TDZ ๋•Œ๋ฌธ์—)
console.log(z);   // ReferenceError (TDZ ๋•Œ๋ฌธ์—)
foo();
bar();

var x = 1;
let y = 2;
const z = 3;

function foo() {
  console.log(“foo ์‹คํ–‰");
}

const bar = function() {
  console.log(“var ์‹คํ–‰");
}

 

console.log๋กœ ๋ณ€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ถ€๋ถ„ + ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ถ€๋ถ„์„ ๋บ€ ์•„๋ž˜ ๋ถ€๋ถ„๋งŒ ์ •๋ฆฌํ–ˆ๋‹ค.

์Šคํƒ์— ์Œ“์ด๋Š” ๊ณผ์ •์„ ๊ทธ๋ฆฌ๋ ค๋ฉด ์ฝ”๋“œ ์ „์ฒด์— ๋Œ€ํ•ด ๊ทธ๋ ค์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šคํƒ ์—ญ์‹œ ์ œ์™ธํ–ˆ๋‹ค.

 

 

๐Ÿ”ฅ JS ์—”์ง„์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•œ๋‹ค.

๐Ÿ”ฅ ์Šค์ฝ”ํ”„๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

 

 

 

์ฐธ๊ณ 

 

 

 

๋ฐ˜์‘ํ˜•