whatisthis?

javaScript. const, let (var๊ณผ์˜ ์ฐจ์ด์ ) ๋ณธ๋ฌธ

WEB STUDY/JAVASCRIPT

javaScript. const, let (var๊ณผ์˜ ์ฐจ์ด์ )

thisisyjin 2022. 1. 14. 10:44

๐Ÿ“Œ const, let

 

 

ES2015(ES6)์—์„œ ๋ฐ”๋€ ๊ฐ€์žฅ ํฐ ์ฐจ์ด ์ค‘ ํ•˜๋‚˜๋กœ,

๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ, var ์™ธ์—๋„ const(constant, ์ƒ์ˆ˜)์™€ let์ด ์ƒ๊ธฐ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

- ๊ธฐ์กด var๊ณผ์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ 'ํ•จ์ˆ˜์Šค์ฝ”ํ”„'๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š๊ณ  '๋ธ”๋ก์Šค์ฝ”ํ”„'๋ฅผ ๋”ฐ๋ฅธ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

ํ•จ์ˆ˜์Šค์ฝ”ํ”„์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ํฌ์ŠคํŒ…์— ์ •๋ฆฌํ•ด๋‘์—ˆ๋‹ค.

 

 

javaScript. ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„(scope)

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ECMAscript 5 ์ด์ „์—๋Š” var๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ–ˆ์—ˆ๋‹ค. (ECMA5์ดํ›„์—๋Š” const์™€ let์ด ๋“ฑ์žฅํ•˜์˜€๋‹ค. ํ˜„์žฌ var์€ ์›ฌ๋งŒํ•ด์„  ์“ฐ์ง€ X) var๋กœ ์ „์—ญ(global)๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์‚ผ๊ฐ€์•ผ

mywebproject.tistory.com

๐Ÿ’ก ์ฃผ์˜! ์Šค์ฝ”ํ”„๋Š” 'ํ˜ธ์ถœ'ํ•  ๋•Œ๊ฐ€ ์•„๋‹ˆ๋ผ '์„ ์–ธ'ํ•  ๋•Œ ์ƒ๊น€. (์ž๊ธฐ ์Šค์ฝ”ํ”„ ์ƒ์œ„๋ฒ”์œ„์—์„œ ์ฐธ์กฐ)

 

 

 

๐Ÿ“Œ ๋ธ”๋ก์Šค์ฝ”ํ”„

ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ํ•ด๋‹น ๋ธ”๋ก์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ.

- ๋ธ”๋ก(block)์ด๋ž€ ๋ณดํ†ต if {} ๋“ฑ์˜ ์ค‘๊ด„ํ˜ธ ์•ˆ์„ ์˜๋ฏธํ•จ.

 

** ๋ธ”๋ก๋ฌธ(block) = ๋ณตํ•ฉ๋ฌธ. 0๊ฐœ ์ด์ƒ์˜ ๊ตฌ๋ฌธ์„ ๋ฌถ์„ ๋•Œ ์‚ฌ์šฉ. ํ•œ ์Œ์˜ ์ค‘๊ด„ํ˜ธ๋กœ ๊ตฌ์„ฑํ•จ.

 

if (true) {
  var x = 3;
}
console.log(x); // 3

์œ„ ์˜ˆ์ œ์—์„œ๋Š” var์ด ํ•จ์ˆ˜์Šค์ฝ”ํ”„๋ฅผ ๋”ฐ๋ฅด๋ฏ€๋กœ

if๋ธ”๋ก๊ณผ ์ƒ๊ด€์—†์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

if (true) {
  const y = 3;
}
console.log(y); // Uncaught ReferenceError: y is not defined

๊ทธ๋Ÿฌ๋‚˜ ์œ„ ์˜ˆ์ œ๋Š” const๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ธ”๋ก์—์„œ๋งŒ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 


 

var์€ ํ˜ธ์ด์ŠคํŒ…(hoisting) ๋•Œ๋ฌธ์— ์ฝ”๋”ฉ์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ๋‹ค.

-> ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ธฐ๋„ ์ „์— ํ•ด๋‹น ๋ณ€์ˆ˜์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ–ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜, const์™€ let์€ ์„ ์–ธํ•˜๊ธฐ ์ „์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ๊ธˆ์ง€๋œ๋‹ค.  >> ์—๋Ÿฌ ๋ฐœ์ƒ

 

const์™€ let์—๋„ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜์ง€๋งŒ, var๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋ฉฐ

TDZ(Temporal Dead Zone)์ด๋ผ๋Š” ํ˜„์ƒ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.

 

 

var m = 1;
console.log(window.m); // 1
const n = 2;
console.log(window.n); // undefined

 

๋˜ํ•œ, var๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ „์—ญ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธ ์‹œ window๋‚˜ global์— ๋“ฑ๋ก๋˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

<์ •๋ฆฌ>

1. const์™€ let์€ ๋ธ”๋ก์Šค์ฝ”ํ”„๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

2. ์„ ์–ธํ•˜๊ธฐ ์ „์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ฒŒ ๋ง‰์•„๋‘์—ˆ๋‹ค. (ํ˜ธ์ด์ŠคํŒ…)

3. ์ „์—ญ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธ์‹œ window๋‚˜ global์— ๋“ฑ๋ก๋˜์ง€ ์•Š๋Š”๋‹ค.

 

 


 

๐Ÿ“Œ const vs. let

 

const ํ•œ ๋ฒˆ ์ดˆ๊ธฐํ™”์‹œ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€ํ•จ. (๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ณ ์ •์‹œํ‚ด)
โ— ์ฃผ์˜ > const์— ํ• ๋‹น๋œ ๊ฐ์ฒดor๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์€ ๋ง‰์ง€ ๋ชปํ•จ.  ์ฆ‰, '='์„ ํ†ตํ•œ ๋Œ€์ž…๋งŒ ๋ง‰์Œ.
let ๊ณ„์† ๊ฐ’์„ ๋ฐ”๊ฟ”์ค„ ์ˆ˜ ์žˆ์Œ.

 

 

 

 

 

 

๐Ÿ˜‘ ์ด์ œ var์€ ์‚ฌ์šฉํ•˜์ง€๋ง์ž. var์˜ ๊ธฐ๋Šฅ์€ let์ด ๋‹ค ํ•œ๋‹ค!

 

 


REFERENCE

https://www.zerocho.com/category/ECMAScript/post/5757d74345041aaae7493479

 

(ECMAScript) ES2015(ES6) Const, Let

์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„๋ถ€ํ„ฐ ๋ณธ๊ฒฉ์ ์œผ๋กœ ES2015(ES6)์—์„œ ์–ด๋–ป๊ฒŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๋จผ์ € ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ var ์™ธ์—๋„ const(constant, ์ƒ์ˆ˜)์™€ let์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. const, let ๊ธฐ์กด

www.zerocho.com

์ด ํฌ์ŠคํŒ…์€ zerocho๋‹˜์˜ javascript ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

๊ณต๋ถ€+๊ธฐ๋ก ์šฉ์œผ๋กœ ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋ฉฐ, ์ž์„ธํ•œ ๊ฒƒ์€ ์œ„ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•˜์„ธ์š”!