var, let, const ์ฐจ์ด

nevermindยท2022๋…„ 11์›” 30์ผ
0

๊ธฐ์ˆ ๋ฉด์ ‘

๋ชฉ๋ก ๋ณด๊ธฐ
5/25

๐Ÿค var, let, const๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹์ด๋‹ค. ๊ทธ ์ฐจ์ด๋ฅผ ์ •๋ฆฌํ•ด๋ณด์ž
๋ณ€์ˆ˜ํ• ๋‹น, ์Šค์ฝ”ํ”„, ํ˜ธ์ด์ŠคํŒ… ์—ฌ๋ถ€์˜ ์ฐจ์ด๋กœ ์ •๋ฆฌ!

๐Ÿค”var

  • ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ์„ ํ—ˆ์šฉํ•˜์—ฌ ์˜๋„์น˜ ์•Š์€ ์žฌํ• ๋‹น์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค

  • var๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋งŒ ์ง€์—ญ์Šค์ฝ”ํ”„๋กœ ์ธ์ •ํ•œ๋‹ค

var a = "aaa"; // ํ•จ์ˆ˜ ์™ธ๋ถ€
function callB() {
    var b = "bbb";
    console.log(a);        //aaa - ์ „์—ญ๋ณ€์ˆ˜
    if(b) {
        var c = "ccc";
        console.log(b);    //bbb- ํ•จ์ˆ˜ ๋‚ด ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ผ์„œ ๊ฐ€๋Šฅ
    }
    console.log(c);        //ccc- ํ•จ์ˆ˜ ๋‚ด ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ผ์„œ ๊ฐ€๋Šฅ
}
callB();
function callC() {
    var d = "ddd";
    console.log(a);    //aaa - ์ „์—ญํ•จ์ˆ˜
    console.log(b);    //b is not defined
    console.log(c);    //c is not defined
   	console.log(d);    //ddd- ํ•จ์ˆ˜ ๋‚ด ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ผ์„œ ๊ฐ€๋Šฅ
}
callC();

//์ฝ”๋“œ๋ธ”๋ก
if(a){
    var e = "eee"
}
 console.log('์ฝ”๋“œ ๋ธ”๋ก๋‚ด์— ์žˆ๋‹ค', e) 
//์ฝ”๋“œ๋ธ”๋ก์— var ํ‚ค์›Œ๋“œ๋กœ e๋ฅผ ์„ ์–ธํ–ˆ์ง€๋งŒ ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋จ
  • ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ… ๋ฐœ์ƒ
    - ํ˜ธ์ด์ŠคํŒ…์ด๋ž€ ์„ ์–ธ๋ฌธ์ด ์ฝ”๋“œ ์ œ์ผ ์ƒ๋‹จ์— ๋Œ์–ด์˜ฌ๋ ค์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ
    - ์„ ์–ธ ๋‹จ๊ณ„๊ณผ ์ดˆ๊ธฐํ™”๋‹จ๊ณ„๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค (๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ•˜์—ฌ undefined๋กœ ๋งŒ๋“ ๋‹ค)

๐Ÿค”let

  • ES6๋ถ€ํ„ฐ ๋‚˜์˜จ ๊ฒƒ์œผ๋กœ var ๋Œ€์ฒด์ œ์ด๋‹ค

  • ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ ๊ธˆ์ง€์‹œํ‚จ๋‹ค(๋ฌธ๋ฒ• ์—๋Ÿฌ ๋ฐœ์ƒ์‹œํ‚ด)

  • ๋ชจ๋“  ์ฝ”๋“œ ๋ธ”๋ก(ํ•จ์ˆ˜, if๋ฌธ, for๋ฌธ, while๋ฌธ ..๋“ฑ) ์ง€์—ญ ์Šค์ฝ”ํ”„๋กœ ์ธ์ •ํ•˜๋Š” ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ ์•ˆ์—์„œ๋„ ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์ธ์ •

  • ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…: ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์ง„ํ–‰
    - ๋Ÿฐํƒ€์ž„ ์ด์ „์— ์•”๋ฌต์ ์œผ๋กœ ์„ ์–ธ ๋‹จ๊ณ„๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜์ง€๋งŒ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ ์‹คํ–‰๋œ๋‹ค
    - ์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€(TDZ)๊ฐ€ ์กด์žฌ
    - ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค

๐Ÿค”const

  • let๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ES6๋ถ€ํ„ฐ ๋‚˜์™”๋‹ค

  • const๋Š” ๋ฐ˜๋“œ์‹œ ์„ ์–ธ๊ณผ ํ• ๋‹น์ด ๋™์‹œ์— ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค

  • ์žฌํ• ๋‹น์ด ๊ธˆ์ง€๋˜์—ˆ๋‹ค

  • ์ƒ์ˆ˜์ด๋‹ค(์žฌํ• ๋‹น์ด ๊ธˆ์ง€๋œ ๋ณ€์ˆ˜)

  • const ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•œ ๊ฒฝ์šฐ๋Š” ๊ฐ’ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

  • ๋ธ”๋ก๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง„๋‹ค

  • ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค

์ •๋ฆฌํ•ด๋ณด๋ฉด

  • ์–ด๋””์„œ ๊ฐ’์ด ๋ฐ”๋€Œ์—ˆ๋Š”์ง€ ๋ชจ๋ฅด๋Š” ์žฌํ• ๋‹น์˜ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” var๋ฅผ let๊ณผ const๊ฐ€ ๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ค€๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒ ๊ตฌ๋‚˜!
  • var๋Š” ๋ณ€์ˆ˜ ์žฌ์„ ์–ธ, ์žฌํ• ๋‹น ๊ฐ€๋Šฅ / let์€ ์žฌํ• ๋‹น๊ฐ€๋Šฅ/ const๋Š” ๋‘˜๋‹ค ๋ถˆ๊ฐ€๋Šฅ
  • var๋Š” ํ•จ์ˆ˜๋ ˆ๋ฒจ์Šค์ฝ”ํ”„์—์„œ๋งŒ ์ง€์—ญ๋ณ€์ˆ˜, let๊ณผ const๋Š” ๋ธ”๋ก๋ ˆ๋ฒจ์Šค์ฝ”ํ”„์™€ ํ•จ์ˆ˜๋ ˆ๋ฒจ์Šค์ฝ”ํ”„์—์„œ ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์ธ์ •
  • var๋Š” ํ˜ธ์ด์ŠคํŒ… ํ˜„์ƒ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž„, let๊ณผ const๋Š” ํ˜ธ์ด์ŠคํŒ… ํ˜„์ƒ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž„
  • โ”๋ณ€์ˆ˜ ์„ ์–ธ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ const๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  let์€ ์žฌํ• ๋‹น์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ํ•œ์ •ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค -> const๋กœ ์„ ์–ธํ•˜๋ฉด ์›์‹œ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ธฐ์— let๋ณด๋‹ค๋Š” ๋” ๋‚˜์€ ๊ฒƒ์ผ๊นŒ..?

์ถœ์ฒ˜ : https://nuhends.tistory.com/111
https://poiemaweb.com/es6-block-scope

profile
winwin

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