์ƒˆ์†Œ์‹

FrontEnd/JavaScript

[JavaScript] TDZ(Temporal Dead Zone) : ๋ณ€์ˆ˜์˜ ์‹œ๊ฐ„ ์—ฌํ–‰~

  • -

๐Ÿฃ ๋ณ€์ˆ˜์˜ ์‹œ๊ฐ„ ์—ฌํ–‰! Temporal Dead Zone!

์˜ค๋Š˜์€ TDZ์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. Temporal Dead Zone, TDZ! ๋„Œ ๋ฌด์—‡์ด๋‹ˆ!?

 

https://kr.pinterest.com/pin/252272016599000508/

 

๐Ÿฃ TDZ ๋ž€?


1. ๊ฐœ๋…

TDZ(Temporal Dead Zone)๋Š” ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์œ„์น˜๋ถ€ํ„ฐ ์ดˆ๊ธฐํ™”๋  ๋•Œ๊นŒ์ง€์˜ ์˜์—ญ์„ ๋งํ•œ๋‹ค. let๊ณผ const ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๋˜์—ˆ์ง€๋งŒ ์•„์ง ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด TDZ์— ํ•ด๋‹นํ•˜๋ฉฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ! ์ดํ›„ ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๋˜๋ฉด TDZ๋ฅผ ๋ฒ—์–ด๋‚˜ ์ •์ƒ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค!

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, ๋ณ€์ˆ˜๊ฐ€ ์ƒ์„ฑ(=๋ณ€์ˆ˜์„ ์–ธ)๋˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์ฒ˜์Œ ๊ฐ’์ด ์ €์žฅ(=์ดˆ๊ธฐํ™”) ๋  ๋•Œ๊นŒ์ง€์˜ ์˜์—ญ์œผ๋กœ
๋ฉ”๋ชจ๋ฆฌ์— ์ดˆ๊ธฐ ๊ฐ’์ด ์—†๋Š” ์ƒํƒœ์—์„œ ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ!

 

ES6์˜ let๊ณผ const๋Š” ๋ณ€์ˆ˜๋ฅผ ๋ธ”๋ก์˜ ์ƒ๋‹จ์œผ๋กœ *ํ˜ธ์ด์ŠคํŒ… ํ•˜์ง€๋งŒ ์ดˆ๊ธฐํ™”ํ•˜์ง€๋Š” ์•Š์Œ! ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜๊ธฐ ์ „์— ๋ธ”๋ก ์•ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š”๋ฐ, ์ด ์œ„์น˜๋ฅผ ์‹œ๊ฐ„์ƒ ์‚ฌ๊ฐ์ง€๋Œ€(Temporal Dead Zone, TDZ)๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค. (ReferenceError ๋ฐœ์ƒ)

* ์ฐธ๊ณ ๋กœ var ์„ ์–ธ์˜ ๊ฒฝ์šฐ undefined๋กœ ์ดˆ๊ธฐํ™” ๋˜๊ธฐ ๋•Œ๋ฌธ์— TDZ๊ฐ€ ์—†๋‹ค.

 

ํ˜ธ์ด์ŠคํŒ…์€ ์ปดํŒŒ์ผ ๋‹จ๊ณ„ ์ค‘์— ๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜ ์„ ์–ธ์ด ํฌํ•จ ๋ฒ”์œ„์˜ ๋งจ ์œ„๋กœ ์ด๋™๋˜๋Š” ๋™์ž‘
์ฐธ๊ณ ๋กœ
๋ณ€์ˆ˜์˜ let, const์— ๋Œ€ํ•œ ๊ฐœ๋… / ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”์— ๋Œ€ํ•œ ๊ฐœ๋…์€
์•„๋ž˜ ๊ฒŒ์‹œ๋ฌผ ์ฐธ๊ณ ~!
 

[JavaScript] ๋ณ€์ˆ˜์˜ ์„ ์–ธ, ์ดˆ๊ธฐํ™”, ํ• ๋‹น

๐Ÿฃ 0. ๋ณ€์ˆ˜์˜ ์„ ์–ธ, ์ดˆ๊ธฐํ™” ํ• ๋‹น?ใ…‡?์˜ค๋Š˜์€ ๋ณ€์ˆ˜์˜ ์„ ์–ธ, ์ดˆ๊ธฐํ™”, ํ• ๋‹น์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค! ๋ฉด์ ‘ ์งˆ๋ฌธ์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜! ์•„๋ž˜์—์„œ ์ฒœ์ฒœํžˆ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด์ž! ๐Ÿฃ 1. ๋ณ€์ˆ˜ ์„ ์–ธ๐Ÿค

haileyham.tistory.com

 

[JavaScript] var, let, const ์ฐจ์ด์ 

๐Ÿฃ var · let · const ์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด์ž!Javascript ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” var let const ! ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ ๊ฐœ๋… ์ค‘์— ๋นผ ๋†“์„ ์ˆ˜ ์—†๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๊ธฐ๋กœ ํ•˜์ž!   ๐Ÿฃ var 1. ๊ฐœ๋… ๋ฐ ํŠน์ง•

haileyham.tistory.com

 

2. ์ฝ”๋“œ

[myLet๊ณผ myConst์— ์ ‘๊ทผ]  ์ดˆ๊ธฐํ™” ์ „ 

  • TDZ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ReferenceError๊ฐ€ ๋ฐœ์ƒ

[myLet๊ณผ myConst์— ์ ‘๊ทผ]  ์ดˆ๊ธฐํ™” ์ดํ›„

  • ์ •์ƒ์ ์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ

[var์˜ ๊ฒฝ์šฐ]

  • var๋Š” ํ˜ธ์ด์ŠคํŒ…๋˜๊ณ  undefined๋กœ ์ดˆ๊ธฐํ™”๋˜๋ฏ€๋กœ TDZ๊ฐ€ ์—†์Œ!
  • ์„ ์–ธํ•˜๊ธฐ ์ „์— myVar์— ์•ก์„ธ์Šคํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋Œ€์‹  undefined์ด ์ถœ๋ ฅ
// Temporal Dead Zone (TDZ) example

// ReferenceError ๋ฐœ์ƒ: TDZ ๋‚ด์—์„œ ์ ‘๊ทผ ์‹œ๋„
try {
  console.log(myLet); // ReferenceError: Cannot access 'myLet' before initialization
} catch (e) {
  console.log(e.message);
}

let myLet = 'This is let';
// TDZ ์ดํ›„ ์ •์ƒ ์ ‘๊ทผ
console.log(myLet); // 'This is let'

// ReferenceError ๋ฐœ์ƒ: TDZ ๋‚ด์—์„œ ์ ‘๊ทผ ์‹œ๋„
try {
  console.log(myConst); // ReferenceError: Cannot access 'myConst' before initialization
} catch (e) {
  console.log(e.message);
}

const myConst = 'This is const';
// TDZ ์ดํ›„ ์ •์ƒ ์ ‘๊ทผ
console.log(myConst); // 'This is const'

// var ๋ณ€์ˆ˜๋Š” TDZ๊ฐ€ ์—†์Œ
console.log(myVar); // undefined
var myVar = 'This is var';
console.log(myVar); // 'This is var'

 

 

๐Ÿฃ TDZ ์š”์•ฝ


TDZ๋Š” 'let' ๋˜๋Š” 'const' ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ์‚ฌ์ด์˜ ์˜์—ญ
TDZ์˜ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋ฉด 'ReferenceError'๊ฐ€ ๋ฐœ์ƒ
let๊ณผ const์—๋Š” TDZ๊ฐ€ ์žˆ์ง€๋งŒ var์—๋Š” ์—†์Œ

 

 

์–ด๋””ํ•œ๋ฒˆ๋‹ค์‹œ์„ค๋ช…ํ•ด๋ณด์ž๊ถ!
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.