๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ธ”๋กœ๊ทธ์ด์ „/๐Ÿ“‹Technical interview(Front)

ํ˜ธ์ด์ŠคํŒ…์ด๋ž€?

by ๋…น์ฐจ๋ง›๊ฐœ๊ตฌ๋ฆฌ 2022. 10. 22.

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

ํ˜ธ์ด์ŠคํŒ…์€ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์„ ์–ธ์„ ํ•จ์ˆ˜ ์œ ํšจ ๋ฒ”์œ„(๋˜๋Š” ํ•จ์ˆ˜ ์™ธ๋ถ€์˜ ๊ฒฝ์šฐ ์ „์—ญ ๋ฒ”์œ„)๊ฐ€ JS ์—”์ง„์—์˜ํ•ด

๋งจ ์œ„๋กœ ์ด๋™ํ•˜๋Š” ํ˜„์ƒ์„ ๋งํ•œ๋‹ค.

( ๐Ÿธ : ์ด๋ ‡๊ฒŒ ๋งํ•˜๋ฉด ์‰ฌ์šด ๋ฌธ์žฅ ๊ฐ™์œผ๋ฉด์„œ๋„ ์–ด๋ ค์šด๊ฑฐ ์•Œ์•„์š” ์ €๋„ ๊ทธ๋žฌ์œผ๋‹ˆ๊นŒ ์ฒœ์ฒœํžˆ ์ฝ์œผ๋ฉด์„œ ๋‚ด๋ ค๊ฐ€๋ณด๋ฉด ์กฐ๊ธˆ์”ฉ ์ดํ•ด๋ ๊ฒ๋‹ˆ๋‹ค..! ) 
JavaScript ์—”์ง„์€ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ ๋‹จ๊ณ„ ์ค‘์— ๋ชจ๋“  
๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜ ์„ ์–ธ ์„ ๋ฒ”์œ„์˜ ๋งจ ์œ„๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
JS ์—”์ง„์˜ ์ด๋Ÿฌํ•œ ๋™์ž‘์„ ํ˜ธ์ด์ŠคํŒ…( hoisting)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” TDZ์™€ ๋ณ€์ˆ˜์˜ ์ƒ์„ฑ ๋‹จ๊ณ„์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.


TDZ

TDZ(Temporal Dead Zone)  ์ง์—ญ์‹œ ์ผ์‹œ์ ์ธ ์‚ฌ๊ฐ์ง€๋Œ€๋ž€ ๋œป์ด๋‹ค.

์ด ์ผ์‹œ์ ์ธ ์‚ฌ๊ฐ์ง€๋Œ€๋Š” ์Šค์ฝ”ํ”„์˜ ์‹œ์ž‘ ์ง€์ ๋ถ€ํ„ฐ ์ดˆ๊ธฐํ™” ์‹œ์ž‘ ์ง€์ ๊นŒ์ง€์˜ ๊ตฌ๊ฐ„์ด๋‹ค.

 

TDZ๋ผ๋Š” ๊ฒƒ์€ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ ์ „ ์‚ฌ์ด์˜ ์‚ฌ๊ฐ์ง€๋Œ€ ์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค!

์ฆ‰ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ์ „์— ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด TDZ ์ƒํƒœ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์ด๊ธฐ ๋•Œ๋ฌธ์— ReferenceError ์—๋Ÿฌ๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค !!

const ๋ณ€์ˆ˜ ์„ ์–ธ ์ „์— num์„ ํ˜ธ์ถœํ•˜๋Š” ํ–‰์œ„ TDZ์กด์— ๊ฑธ๋ฆผ


๋ณ€์ˆ˜์˜ ์ƒ์„ฑ ๋‹จ๊ณ„

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜(variable)๋Š” 3๊ฐ€์ง€ ๋‹จ๊ณ„๋ฅผ ๊ฑธ์ณ ์ƒ์„ฑ๋œ๋‹ค. 

 

Step 1. Declaration phase : ์„ ์–ธ ๋‹จ๊ณ„

  • ๋ณ€์ˆ˜๋ฅผ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ๋ณ€์ˆ˜ ๊ฐ์ฒด์— ๋“ฑ๋กํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค.
  • ์ด ๋ณ€์ˆ˜ ๊ฐ์ฒด๋Š” ์Šค์ฝ”ํ”„๊ฐ€ ์ฐธ๊ณ ํ•˜๋Š” ๋Œ€์ƒ์ด ๋œ๋‹ค.
  • ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค. ์˜ˆ) var myValue

 

Step 2. Initialization phase : ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„

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

 

Step 3. Assignment phase : ํ• ๋‹น ๋‹จ๊ณ„

  • ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„์—์„œ undefined๋กœ ์ดˆ๊ธฐํ™”๋œ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ค๋ฅธ ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค.
  • myValue = 100

 

// ์„ ์–ธ var setId; // ์ดˆ๊ธฐํ™”(ํ• ๋‹น) serId = '16'; // ์‚ฌ์šฉ alert(myValue);

 


๋ณ€์ˆ˜์— ๊ด€ํ•œ ๋ฐฐ๊ฒฝ์ง€์‹

- Block scope(๋ธ”๋ก์Šค์ฝ”ํ”„)

{ }๋กœ ๊ฐ์‹ธ์ ธ ์žˆ๋Š” ๋ธ”๋ก ๋ฒ”์œ„๋ฅผ ๋งํ•œ๋‹ค. ( if,for, ํ•จ์ˆ˜, while, try/catch ๋“ฑ...)

{ } ๋ธ”๋ก ์Šค์ฝ”ํ”„ ์•ˆ์— ์žˆ๋Š” ์–˜๋“ค์€ ๋”์ด์ƒ ๋ฐ•์Šค ๋ฐ–์—์„œ ๋ณผ ์ˆ˜ ์—†๋‹ค( ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค, ๋ธ”๋ก์•ˆ์—์„œ๋งŒ ๊ฐ€๋Šฅ )

 

// ์ „์—ญ ๋ณ€์ˆ˜ let globalName = 'global scope' { let name = "Frog"; console.log(name); name = "Hello"; console.log(name); // ์ „์—ญ ๋ณ€์ˆ˜๋Š” ๋ธ”๋ก ๋ฐ–์—์„œ ํ˜ธ์ถœ์€ ๋ฌผ๋ก ์ด๊ณ  ์•ˆ์—์„œ๋„ ํ˜ธ์ถœํ• ์ˆ˜์žˆ๋‹ค. console.log(globalName); } console.log(name); // ๋ธ”๋ก ์•ˆ์—์žˆ๋Š” name ๋ณ€์ˆ˜์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. Error console.log(globalName)

 


๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…(Variable Hoisting)

๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์—์„œ๋Š” Var ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ๋งŒ Error๊ฐ€ ๋œจ์ง€์•Š์œผ๋ฉฐ, undefined๋กœ ์ž๋™ ์ดˆ๊ธฐํ™” ๋œ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
๋‹ค๋ฅธ ๋ณ€์ˆ˜๋“ค( const, let )์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ž˜์—์„œ ๋‹ค๋ค„๋ณธ๋‹ค.

 

console.log(num); // undefined var num = "oneTwoThree";

num ๋ณ€์ˆ˜์˜ ๊ฐ’์€ ์ •์˜๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์„ ์–ธ๋˜๊ธฐ ์ „์— ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๋ณด์ด์ง„ ์•Š์ง€๋งŒ JS ์—”์ง„์ด ์‹คํ–‰ ์ „์— ์ฝ”๋“œ๋ฅผ ์•„๋ž˜๐Ÿ‘‡๐Ÿป์™€ ๊ฐ™์ด ์ˆ˜์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

var num; // ํ˜ธ์ด์ŠคํŒ… console.log(num); // undefined num = "oneTwoThree";

var์˜ ๊ฒฝ์šฐ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ณผ์ •์ด ์ž๋™์ ์œผ๋กœ ๋™์‹œ์— ์ผ์–ด๋‚˜์„œ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•œ๋‹ค.

๋งˆ์ง€๋ง‰ ์ค„์—์„œ, num ์˜ ๊ฐ’์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

Var ๋ณ€์ˆ˜์˜ ์ƒ์„ฑ ๋‹จ๊ณ„

 

๐Ÿšซ์ฃผ์˜

๋ณ€์ˆ˜ ์„ ์–ธ์€ ์„ ์–ธ๋œ ๋ฒ”์œ„์˜ ๋งจ ์œ„๋กœ ์ด๋™๋œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ธ”๋ก ๋ฒ”์œ„ ํ•จ์ˆ˜ ์•ˆ์—์„œ ๋”ฐ๋กœ ์˜ํ–ฅ

function () { console.log(x); var x = 'ํ•จ์ˆ˜{}์Šค์ฝ”ํ”„ ์•ˆ์—์„œ ํ˜ธ์ด์ŠคํŒ…'; } console.log(y); var y = '๊ธ€๋กœ๋ฒŒ ๋ฒ”์œ„ ํ˜ธ์ด์ŠคํŒ…';

 

โ—ํ”Œ๋Ÿฌ์Šค

{ age = 4; var age; } console.log(age); // block scope์„ ๋ฌด์‹œํ•˜๊ณ  ์ฝ˜์†”์ฐํž˜ var ๊นกํŒจ;;;

 


ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…(Function Hoisting)

JavaScript์˜ ํ˜•์‹ ํ•จ์ˆ˜ ์„ ์–ธ๋„ ๋ณ€์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฒ”์œ„์˜ ๋งจ ์œ„๋กœ ํ˜ธ์ด์ŠคํŠธ๋ฉ๋‹ˆ๋‹ค. 

class ๊ตฌ๋ฌธ์€ ํ˜ธ์ด์ŠคํŠธ๋˜์ง€๋งŒ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.

 

Hello(); // Hello function Hello() { console.log("Hello"); }

์œ„์˜ ์ฝ”๋“œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ ํ•จ์ˆ˜๋„ ์„ ์–ธ๋„ ์ „์— Hello() ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ํ˜ธ์ด์ŠคํŒ…์œผ๋กœ ์ธํ•ด Hello ๊ฐ’์ด

์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ( ํ˜ธ์ด์ŠคํŒ… )

 

๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…๊ณผ ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ… ์˜ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์€ 

๋ณ€์ˆ˜๊ฐ€ ํ˜ธ์ด์ŠคํŠธ๋œ var๋‹ค์Œ undefined์œผ๋กœ ์ž๋™ ์ดˆ๊ธฐํ™”๋˜๋Š” ๋ฐ˜๋ฉด

ํ•จ์ˆ˜ ์„ ์–ธ์€ ํ˜ธ์ด์ŠคํŠธ ๋˜์–ด ํ•ด๋‹น ํ•จ์ˆ˜ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

 

๐Ÿšซ์ฃผ์˜

ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•จ์ˆ˜ ํ‘œํ˜„์‹ ํ• ๋‹น์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๋Š”์  ์ฃผ์˜ํ•˜์ž

Hello(); // TypeError: greeting is not a function console.log(hello); // undefined var hello = function Hello() { console.log("Hello!"); };

 

 


Var, function ํ˜ธ์ด์ŠคํŒ… ์ด์™ธ

์œ„์˜ ๊ธ€๋กœ ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ๊นŒ์ง€ var,  function์„ ์–ธ ์— ๋Œ€ํ•ด์„œ ํ˜ธ์ด์ŠคํŒ…๋˜๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ž˜์•„๋Š” let๊ณผ const์€ ํ˜ธ์ด์ŠคํŒ… ๋˜์ง€ ์•Š๋Š”๊ฑธ๊นŒ? ์•Œ์•„๋ณด์ž 

์šฐ์„  ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์„ ์–ธ ( var, let, const, function, import๊ตฌ๋ฌธ, class) ์€ JavaScript์—์„œ "ํ˜ธ์ด์ŠคํŠธ" ๋œ๋‹ค.

 

์ด๋Š” ์•ž์„œ ๊ณ„์† ๋งํ–ˆ๋“ฏ ์ด๋ฆ„์ด ๋ฒ”์œ„์—์„œ ์„ ์–ธ๋œ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฒ”์œ„์—์„œ ์‹๋ณ„์ž๊ฐ€ ํ•ญ์ƒ ์•ž์„œ ์ธ์‹๋˜๊ณ 

ํ•ด๋‹น ํŠน์ • ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ const , let, ํด๋ž˜์Šค ๊ตฌ๋ฌธ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์‹คํ–‰ํ•ด๋ณด๋ฉด ํ˜ธ์ด์ŠคํŠธ ๋˜์ง€ ์•Š์€๊ฒƒ ์ฒ˜๋Ÿผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

console.log(hello) const hello = "Hello frog" //error : ReferenceError

let ํ‚ค์›Œ๋“œ๋Š” ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋‚˜๋ˆ„์–ด์„œ ์ง„ํ–‰๋œ๋‹ค.

ํ˜ธ์ด์ŠคํŠธ์— ์˜ํ•ด ๋ณ€์ˆ˜๋ฅผ ๋“ฑ๋ก(์„ ์–ธ๋‹จ๊ณ„)ํ•˜์ง€๋งŒ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ ์ด๋ฃจ์–ด์ง€๋ฉฐ.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ์ดˆ๊ธฐํ™” ์ด์ „์— ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋ฉด ์ฐธ์กฐ ์—๋Ÿฌ(Reference Error)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

console.log(num); // Reference Error, TDZ๊ตฌ๊ฐ„ let num; // ์„ ์–ธ๋ฌธ์— ๋„๋‹ฌ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ console.log(num); // undefined num = 10; // ํ• ๋‹น ๋‹จ๊ณ„ console.log(num); // 10
 

const 

const๋Š” ์žฌํ• ๋‹น ๋ฐ ์žฌ์„ ์–ธ์ด ๊ธˆ์ง€๋œ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, const ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ๋ฐ ํ• ๋‹น์„ ๋™์‹œ์— ํ•ด์•ผ ํ•œ๋‹ค.

console.log(hello) //error : ReferenceError const hello = "Hello frog" // ์„ ์–ธ ํ• ๋‹น์„ ๊ผญ ๋™์‹œ์— ํ•ด์•ผํ•œ๋‹ค

 

๊ฒฐ๋ก 

๋”ฐ๋ผ์„œ var / function(ํ•จ์ˆ˜) ์„ ์–ธ๊ณผ let / const / class์„ ์–ธ ์˜ ์ฐจ์ด์  ์€ ์ดˆ๊ธฐํ™” ์ด๋‹ค. 

var / function(ํ•จ์ˆ˜)๋Š” *์Šค์ฝ”ํ”„ ์ƒ๋‹จ์— *๋ฐ”์ธ๋”ฉ์ด ์ƒ์„ฑ๋  ๋•Œ ๋ฐ”๋กœ ๋ณ€์ˆ˜ ๋˜๋Š” ํ•จ์ˆ˜๋Š” undefined๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค . 

let / const / class๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์œ ์ง€ ๋œ๋‹ค.

let / const / class ๋ฌธ์ด ์‹ค์ œ๋กœ ์„ ์–ธ๋ฌธ ์ฝ”๋“œ ์œ„์น˜์— ๋„๋‹ฌํ–ˆ์„๋•Œ๋งŒ ์ดˆ๊ธฐํ™”๋œ๋‹ค.

TDZ๋Š” ์„ ์–ธํ•˜๊ธฐ ์ „์— ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๋‹ค๋Š” ๊ฒƒ.
๋ฐ˜๋Œ€๋กœ var ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ์ „์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๊ฐ€ ์—‰ํ‚ค๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๋Š” ์›์ธ์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— var ์‚ฌ์šฉ์€ ํ”ผํ•˜๊ณ  let๊ณผ const ์‚ฌ์šฉ์„ ์ฃผ๋กœ ํ•˜๋ผ

 

* ์Šค์ฝ”ํ”„ : ๋ณ€์ˆ˜๊ฐ€ ๊ฐ’์„ ์ฐธ์กฐํ•  ๋•Œ ์ ‘๊ทผํ•  ๋ฒ”์œ„ ( ์ „์—ญ/ ์ง€์—ญ )

* ๋ฐ”์ธ๋”ฉ: ํ”„๋กœ๊ทธ๋žจ์— ์‚ฌ์šฉ๋œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์‹ค์ œ ๊ฐ’ ๋˜๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฒฐ์ •์ง“๋Š” ํ–‰์œ„

 

๐Ÿ“š์ถœ์ฒ˜


https://gmlwjd9405.github.io/2019/04/22/javascript-hoisting.html

https://nuhends.tistory.com/111

https://cpro95.tistory.com/431

https://s-bug.tistory.com/45

728x90

'๋ธ”๋กœ๊ทธ์ด์ „ > ๐Ÿ“‹Technical interview(Front)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋ธŒ๋ผ์šฐ์ € ๋™์ž‘ ์›๋ฆฌ  (0) 2022.09.30