๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Javascript

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

 

 

๐Ÿ“Œ var์˜ scope๋Š” ํ•จ์ˆ˜ ๋‹จ์œ„์ด๊ณ ,  let, const์˜ scope๋Š” ๋ธ”๋ก ๋‹จ์œ„์ด๋‹ค.

 

scope๋ž€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ’์˜ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ๋งํ•œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ์˜์—ญ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์•„๋ž˜์˜ ์ฝ”๋“œ์—์„œ if ๋ฌธ ์•ˆ์—์„œ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์„ค์ •ํ–ˆ๋Š”๋ฐ,

if ๋ฌธ ๋ฐ–์— ์žˆ๋Š” message์˜ ๊ฐ’์ด ์ˆ˜์ •๋˜์—ˆ๋‹ค. var ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋Š” ๊ฒฐ๊ตญ ์Šค์ฝ”ํ”„์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

function printMessage() {
  var message = "hello";

  if (true) {
    var message = "world!";

    console.log(message);
    // world!
  }

  console.log(message);
  // world!
}

 

 

์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ let๊ณผ const์ด๋‹ค.

let๊ณผ const๋Š” ์Šค์ฝ”ํ”„๊ฐ€ ํ•จ์ˆ˜ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ๋ธ”๋ก ๋‹จ์œ„์ด๋ฏ€๋กœ,

if๋ฌธ ์•ˆ์—์„œ ์„ ์–ธํ•œ message์˜ ๊ฐ’์€ if ๋ฌธ ๋ฐ–์˜ message์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค.

function printMessage() {
  let message = "hello";

  if (true) {
    let message = "world!";

    console.log(message);
    // world!
  }

  console.log(message);
  // hello
}

 

 

๐Ÿ“Œ var๋Š” ์ค‘๋ณต์œผ๋กœ ๋ณ€์ˆ˜ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, let๊ณผ const๋Š” ๋ณ€์ˆ˜๋ฅผ ์ค‘๋ณต์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์—†๋‹ค.

 

var message = "hello";
var message = "wolrd!"; // ๊ฐ€๋Šฅ

 var๋Š” ์˜ˆ์ œ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ค‘๋ณต๋œ ์ด๋ฆ„์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค‘๋ณต๋œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค. ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฐ’์ด ์–ธ์ œ๋“  ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค๋Š” ์ด์•ผ๊ธฐ์ด๋‹ค.

 

 let๊ณผ const๋Š” ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ™์€ ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ ์ค‘๋ณต ์„ ์–ธ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

let message = "hello";
let message = "hello wolrd!"; // Uncaught SyntaxError: Identifier 'message' has already been declared

 

 

๐Ÿ“Œ var, let์€ ๊ฐ’์„ ๋‹ค์‹œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, const๋Š” ํ•œ ๋ฒˆ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

const๋Š” ์ƒ์ˆ˜๋กœ, ํ•œ ๋ฒˆ๋งŒ ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

const message = "hello";
message = "hello wolrd!"; // Uncaught TypeError: Assignment to constant variable.

 

 

๐Ÿ“ ์ •๋ฆฌ

 

ES6 ๋ฌธ๋ฒ•์—์„œ๋Š” var์˜ ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค. let๊ณผ const๊ฐ€ var๊ฐ€ ํ•˜๋Š” ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. let์€ ๊ฐ’์ด ์œ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๊ณ , const๋Š” ํ•œ๋ฒˆ ์„ค์ •ํ•œ ํ›„ ๋ณ€๊ฒฝํ•  ์ผ์ด ์—†๋Š” ๊ฐ’์— ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด const๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ , ๊ฐ’์ด ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด let์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.