var, let, const

movieยท2022๋…„ 7์›” 24์ผ
0

๋ณ€์ˆ˜ ์„ ์–ธ

  • ์–ด๋–ค ๊ฐ’์„ ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด ์ปดํ“จํ„ฐ๋Š” ํ•ด๋‹น ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜์—ฌ ์ฐจํ›„์— ๊ทธ ๊ฐ’์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๊บผ๋‚ด์ค€๋‹ค.
  1. ์‚ฌ๊ณผ, ๋ฐ”๋‚˜๋‚˜๋ผ๋Š” ๊ฐ’์„ ์ปดํ“จํ„ฐ์— ์ €์žฅํ•˜๋ผ๊ณ  ๋ช…๋ น์„ ํ•œ๋‹ค.
  2. ์ปดํ“จํ„ฐ๋Š” ํ•ด๋‹น ๊ฐ’๋“ค์„ ์ž์‹ ์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค.

  1. ์ด ์ค‘ ์‚ฌ๊ณผ๋ผ๋Š” ๊ฐ’์„ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, 2๋ฒˆ ์ฃผ์†Œ์— ์žˆ๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
  • ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ ค ํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ฐ’์„ ์•Œ์•„๋‚ด๊ณ  ๊ธฐ์–ตํ•˜๋Š” ๋ฐ์—๋Š” ๋งŽ์€ ์–ด๋ ค์›€์ด ์žˆ๋‹ค. ์œ„ ์˜ˆ์‹œ์—์„œ๋Š” 2์™€ ์‚ฌ๊ณผ๋Š” ์ „ํ˜€ ๊ด€๋ จ์ด ์—†์Œ์—๋„ ์‚ฌ๊ณผ๋ผ๋Š” ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 2๋กœ ์ ‘๊ทผํ•ด์•ผํ•œ๋‹ค.
    • ์ด๋Ÿฐ ์ด์œ ๋กœ ์šฐ๋ฆฌ๋Š” ์‚ฌ๊ณผ๋ผ๋Š” ๊ฐ’์— apple์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ช…์„ ์ค€๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด apple์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ช…์„ ํ†ตํ•ด ์‚ฌ๊ณผ๋ผ๋Š” ๊ฐ’์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๋ณ€์ˆ˜ ์„ ์–ธ : ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณด
๋ณ€์ˆ˜ ํ• ๋‹น : ํ•ด๋‹น ๊ณต๊ฐ„์˜ ์ฃผ์†Œ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅ
๋ณ€์ˆ˜ ์ฐธ์กฐ : ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ์ฝ์Œ


var๋Š” ์™œ.. ์ด๋ž˜์š”?

1๏ธโƒฃ var index = 0; 
var sum = 0;

for (2๏ธโƒฃ var index = 1; index < 11; index++) { 
 sum = sum + index; 
}

console.log(sum); // 55
console.log(index); // 11
  • for๋ฌธ ์•ˆ์—์„œ index๋ผ๋Š” ์ด๋ฆ„๋งŒ ๊ฐ™์€ ๋ณ€์ˆ˜(2๏ธโƒฃ)๋ฅผ ๋ฐ˜๋ณต๋ฌธ์„ ์œ„ํ•ด ์„ ์–ธํ•ด์คฌ์„ ๋ฟ์ธ๋ฐ 1๏ธโƒฃ์˜ index์˜ ๊ฐ’๋„ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. ์ด๋Š” ์™œ ๋•Œ๋ฌธ์ผ๊นŒ?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ์˜ ์—ญ์‚ฌ ๐Ÿง”๐Ÿปโ€โ™€๏ธ

  • ~ES5 : var์˜ ์ „์„ฑ๊ธฐ
  • ES6 : let๊ณผ const์˜ ๋„์ž… (์ด๋Š” var์˜ ๋ฌธ์ œ์  ๋•Œ๋ฌธ!)

โ˜๏ธ var์˜ ๋ฌธ์ œ์ 

1๏ธโƒฃ ์ค‘๋ณต์„ ์–ธ์ด ํ—ˆ์šฉ๋œ๋‹ค.

var x = 1;
var y = 1;

var x = 100; // ์žฌ์„ ์–ธ ํ›„ ๊ฐ’ ํ• ๋‹น โญ•๏ธ
var y; // ์žฌ์„ ์–ธ ํ•  ๋•Œ ๊ฐ’ ํ• ๋‹น โŒ

console.log(x); // 100
console.log(y); // 1

์ค‘๋ณต ์„ ์–ธ์ด ์–ด์งธ์„œ ๋ฌธ์ œ๊ฐ€ ๋ ๊นŒ?

// 1. ๊ฐœ๋ฐœ์ž A๋Š” ๋ณ€์ˆ˜ x, y๋ฅผ ๋จผ์ € ์„ ์–ธํ•œ๋‹ค.
var x = 1;
var y = 1;

... ์ˆ˜๋งŒ์ค„์˜ ์ฝ”๋“œ 

// 2. ๊ฐœ๋ฐœ์ž B๊ฐ€ ๋‹ค์‹œ ๋ณ€์ˆ˜ x, y๋ฅผ ์„ ์–ธํ•œ๋‹ค.
var x = 100; 
var y; 


// 3. ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ฌ ํ™•๋ฅ  ์ฆ๊ฐ€ (A๋‘ฅ์ ˆ)
console.log(x); 
console.log(y); 

2๏ธโƒฃ ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง„๋‹ค.

var x = 1;

if (true) {
  var x = 100;
}

console.log(x); // 100

var๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ค‘๋ณต์„ ์–ธ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ x๊ฐ€ ๋‹ค์‹œ ์„ ์–ธ๋  ์ˆ˜ ์žˆ๊ณ ,
var๊ฐ’์€ 1์ด ์•„๋‹Œ 100์ด ์ถœ๋ ฅ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค.
if๋ฌธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, for๋ฌธ ๋“ฑ ํ•จ์ˆ˜ ์ฝ”๋“œ ๋ธ”๋ก์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์ฝ”๋“œ๋ธ”๋ก์—์„œ var ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.
ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„์น˜ ์•Š๊ฒŒ ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•ด ์ค‘๋ณต ์„ ์–ธ๋  ํ™•๋ฅ ์ด ๋†’๋‹ค.

3๏ธโƒฃ ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

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

  1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฝ์œผ๋ฉด์„œ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ ๋˜๋Š” ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ ๋“ฑ์„ ์ฐพ์•„ ๋จผ์ € ์‹คํ–‰ํ•œ๋‹ค.
  2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์„ ์–ธ๋ฌธ์„ ๋งจ ์œ„๋กœ ๋Œ์–ด์˜ฌ๋ ค ์ฒซ ์ค„์— ์žˆ๋Š” console.log๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.
  3. ๋งŒ์•ฝ ํ˜ธ์ด์ŠคํŒ…์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, apple์ด ์„ ์–ธ๋˜์ง€ ์•Š์€ ์ฑ„ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋‚  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ํ˜ธ์ด์ŠคํŒ…์— ์˜ํ•ด apple์ด ์„ ์–ธ๋˜๊ณ  (var apple;์ด ๋ฐ‘์— ์กด์žฌํ•˜๋ฏ€๋กœ), undefined๋กœ ์ดˆ๊ธฐํ™”๋œ ์ƒํƒœ์ด๋‹ค.

ํ˜ธ์ด์ŠคํŒ…์˜ ๋ฌธ์ œ

  • ๊ฐ€๋…์„ฑ์„ ํ•ด์นœ๋‹ค.
  • ์„ ์–ธ์ „์—๋„ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ํ™•๋ฅ ์ด ๋†’์•„์ง„๋‹ค.

โ˜๏ธ ์•„ํ•˜ ์ด๋ž˜์„œ let๊ณผ const๊ฐ€ ๋„์ž…๋๊ตฌ๋‚˜?


let์˜ ํŠน์ง•

1๏ธโƒฃ ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ ๊ธˆ์ง€

let ๊ณผ์ผ = '์‚ฌ๊ณผ';
let ๊ณผ์ผ = '๋ฐ”๋‚˜๋‚˜'; // SyntaxError

let์€ ์ค‘๋ณต ์„ ์–ธ ํ—ˆ์šฉ์œผ๋กœ ์ธํ•œ ํœด๋จผ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ ์ž, ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ์— ๋Œ€ํ•ด ๋ฌธ๋ฒ• ์—๋Ÿฌ๋ฅผ ๋„์šด๋‹ค. ("์ด๊ฑฐ ์ด๋ฏธ ์“ฐ์ธ๊ฑฐ์•ผ! ๋‹ค๋ฅธ ์ด๋ฆ„ ์จ!")

2๏ธโƒฃ ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„

์šฐ์„  ์Šค์ฝ”ํ”„๊ฐ€ ๋ญ˜๊นŒ?

์Šค์ฝ”ํ”„

  • ์‹๋ณ„์ž๋ฅผ ์ฐพ์„ ๋•Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ™•์ธํ•˜๋Š” ๋ฒ”์œ„
  • ์ƒ์œ„ ์Šค์ฝ”ํ”„์—์„œ๋Š” ํ•˜์œ„ ์Šคํฌํ”„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐ˜๋Œ€๋Š” ๋ถˆ๊ฐ€๋Šฅ
function foo() { // local
 let scope = 'local';
 
 if (true) { // block
  let scope = 'block';
   
  console.log(scope);
 }
 console.log(scope);
}
// global

let scope = 'global';

foo();

console.log(scope);

// ์ถœ๋ ฅ
// block
// local
// global
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ block, local, global ์Šค์ฝ”ํ”„๊ฐ€ ์กด์žฌ
  • ES5๊นŒ์ง€๋Š” ์ „์—ญ ์Šค์ฝ”ํ”„์™€ ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ํ–ˆ์ง€๋งŒ, let๊ณผ const๊ฐ€ ๋„์ž…๋˜๋ฉด์„œ ๋ธ”๋ก ์Šค์ฝ”ํ”„๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ž€ ๋ญ˜๊นŒ?

let ๊ณผ์ผ = '์‚ฌ๊ณผ';

function printFruit() {
 let ๊ณผ์ผ = '๋ฐ”๋‚˜๋‚˜';
  
 console.log(๊ณผ์ผ); // ๋ฐ”๋‚˜๋‚˜
}

console.log(๊ณผ์ผ); // ์‚ฌ๊ณผ 

printFruit();

๋™์ผํ•œ ๋ณ€์ˆ˜์ด๋ฆ„์„ ๊ฐ€์ง์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์ด์œ ๋Š” let์ด ์ฝ”๋“œ ๋ธ”๋ก์„ ์Šค์ฝ”ํ”„๋กœ ์ธ์ •ํ•˜๋Š” ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์ฝ”๋“œ ๋ธ”๋ก : ํ•จ์ˆ˜, if๋ฌธ, for๋ฌธ ๋“ฑ์˜ ์ฝ”๋“œ ๋ธ”๋ก {}

3๏ธโƒฃ ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

var์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ํ˜ธ์ด์ŠคํŒ…์ด ์ด๋ฃจ์–ด์ ธ ์„ ์–ธ๋ฌธ์ด ๋งจ ์•ž์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง€๊ธฐ ๋•Œ๋ฌธ์— ์•„์ง ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜๊ธฐ ์ „ ์ธ๋ฐ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ง€ ์•Š๊ณ  undefined๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
ํ•˜์ง€๋งŒ let์€ ํ˜ธ์ด์ŠคํŒ…์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.
์ฆ‰, var์™€ ๋‹ฌ๋ฆฌ ์„ ์–ธํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.

// var

console.log(๊ณผ์ผ); // undefined

var ๊ณผ์ผ;
// let 
console.log(๊ณผ์ผ); // ์ฐธ์กฐ ์—๋Ÿฌ : ReferenceError

let ๊ณผ์ผ;
console.log(๊ณผ์ผ); // ์„ ์–ธ๋งŒ ํ•ด์ฃผ์—ˆ์„ ๋•Œ๋Š” var์˜ ํ˜ธ์ด์ŠคํŒ…๊ณผ ๊ฐ™์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์˜ํ•ด์„œ ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ๋กœ, undefined ์ถœ๋ ฅ 

var์™€ let์€ ์†Œ์Šค ํ‰๊ฐ€ ๊ณผ์ •์—์„œ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ์„๊นŒ?

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

  • ์„ ์–ธ ๋‹จ๊ณ„ : ์Šค์ฝ”ํ”„์— ๋ณ€์ˆ˜ ์‹๋ณ„์ž๋ฅผ ๋“ฑ๋กํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์—๊ฒŒ ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ์กด์žฌ๋ฅผ ์•Œ๋ฆฐ๋‹ค.
  • ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ : ๋“ฑ๋ก๋œ ๋ณ€์ˆ˜ ์‹๋ณ„์ž์— ๊ฐ’์„ undefined๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ์–ด๋–ค .. ์ฐจ์ด๊ฐ€?

  • var : ๋‘ ๊ณผ์ •์„ ์†Œ์Šค ํ‰๊ฐ€ ๊ณผ์ •์—์„œ ๋ชจ๋‘ ์ด๋ฃฌ๋‹ค. (์„ ์–ธ, ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„)
  • let : ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์ง„ํ–‰๋œ๋‹ค.
    • ์„ ์–ธ ๋‹จ๊ณ„ : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์—๊ฒŒ ๋ณ€์ˆ˜์˜ ์กด์žฌ๋ฅผ ์•Œ๋ฆฐ๋‹ค. (ํ˜„์žฌ JS์—”์ง„์€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ์–ด๋–ค ๊ฐ’์„ ๊ฐ€์กŒ๋Š”์ง€ ๋ชจ๋ฅธ๋‹ค. ์ด๋Ÿฐ ์ด์œ ๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์— ์•ž์„œ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ReferenceError๊ฐ€ ๋‚œ๋‹ค.)
    • ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ : ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค! (์†Œ์Šค ํ‰๊ฐ€ ๊ณผ์ •์—์„œ ํ•˜์ง€ ์•Š์Œ)

์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€ (TDZ)

let์€ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ ์ „์—์„œ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ์ด๋ค„์ง€์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ทธ ์ „์— ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ReferenceError๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ์„ ์–ธ๋ฌธ ์ดํ›„์— ์ฐธ์กฐํ•  ๊ฒฝ์šฐ undefined๋กœ ์ดˆ๊ธฐํ™”๋œ ์ƒํƒœ์ด๋ฏ€๋กœ undefined๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
์ด์ฒ˜๋Ÿผ (์Šค์ฝ”ํ”„ ์‹œ์ž‘ ์ง€์  ~ ์ดˆ๊ธฐํ™” ์‹œ์ž‘ ์ง€์ )๊นŒ์ง€ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋Š” ๊ตฌ๊ฐ„์„ ์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.


const์˜ ํŠน์ง•

๊ธฐ๋ณธ์ ์œผ๋กœ let์˜ ํŠน์ง•์„ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

1๏ธโƒฃ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”๊ฐ€ ํ•„์ˆ˜

const a; // SyntaxError

const๋Š” ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๋‹ค๋Š” ๋ชฉ์ ์„ฑ์— ๋งž๊ฒŒ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๋ฌธ๋ฒ• ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

2๏ธโƒฃ ์žฌํ• ๋‹น ๊ธˆ์ง€

const a = 10;

a = 100; // TypeError

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ์˜ ์ƒ์ˆ˜ ํŠน์ง•

const๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ๋ณ€์ˆ˜๊ฐ€ ์œ„์™€ ๊ฐ™์ด ์ƒ์ˆ˜์— ํŠน์ง•์„ ๊ฐ–๊ฒŒ ๋˜์–ด ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด์—์„œ ์œ ๋ฆฌํ•˜๋‹ค. (์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๊ฒƒ์€ ๋ณ€ํ•˜์ง€ ์•Š์„ ๊ฐ’์ด๋‹ค๋ผ๋Š” ๊ฒƒ์„ ๋ฏธ๋ฆฌ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค.)
์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ const๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๊ฐ€ ์›์‹œ๊ฐ’์ด ํ• ๋‹น๋˜์—ˆ๋‹ค๋ฉด ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ๋“  ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ฐธ์กฐ๊ฐ’์ด ํ• ๋‹น๋˜์–ด ์žˆ๋‹ค๋ฉด ๋‚ด๋ถ€ ์†์„ฑ์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค. (๋ฌผ๋ก , ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.)

๋งˆ๋ฌด๋ฆฌ

var๋Œ€์‹  let๊ณผ const๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ์ด์œ ?

  1. ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ์ค‘๋ณต๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. (์žฌ์„ ์–ธ ๊ธˆ์ง€)
  2. ๋ณ€์ˆ˜ ๊ฐ’์ด ํ• ๋‹น๋˜๊ธฐ ์ „ ์‚ฌ์šฉํ•  ๋•Œ์˜ ํ˜ผ๋ž€์„ ์ค„์—ฌ์ค€๋‹ค. (TDZ)
  3. ๋ณ€์ˆ˜ ๊ฐ„์˜ ์ ‘๊ทผ์„ ์ œํ•œํ•˜์—ฌ ์ฐจ์ด๋ฅผ ๋ช…ํ™•ํžˆ ํ•œ๋‹ค.


์ฐธ๊ณ 

profile
์˜ํ™”๋ณด๊ด€์†Œ๋Š” ์˜ํ™”๊ด€ ๐Ÿ˜Ž

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด