Study_Develop/JavaScript

JavaScript / var, let, const μž¬μ„ μ–Έ, μž¬ν• λ‹Ή 차이

hiijihyun 2023. 3. 20. 19:35
λ°˜μ‘ν˜•
1. λ³€μˆ˜μ˜ μ„ μ–Έ, ν• λ‹Ή, λ²”μœ„λž€?

λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œμ—

μ„ μ–Έκ³Ό ν• λ‹Ήμ΄λΌλŠ” μš©μ–΄κ°€ μžˆλŠ”λ°,

λ³€μˆ˜ λ§Œλ“œλŠ” 것을 μ„ μ–Έ,

λ³€μˆ˜μ— 뭐 λ„£λŠ” 것을 할당이라고 ν•©λ‹ˆλ‹€.

 

var 이름;
var λ‚˜μ΄;

이런 μ½”λ“œλ₯Ό 선언이라고 ν•©λ‹ˆλ‹€.

 

var λ‚˜μ΄;
var 이름;
λ‚˜μ΄ = 23;
이름 = 'lim';

 

μ•„λž˜ 두쀄이

할당이라고 ν•©λ‹ˆλ‹€.

 

1. μ €λ ‡κ²Œ μ„ μ–Έλ§Œ λ”°λ‘œ ν• λ‹Ήλ§Œ λ”°λ‘œλ„ κ°€λŠ₯ν•©λ‹ˆλ‹€.

2. 이미 μžˆλŠ” λ³€μˆ˜λ₯Ό μž¬μ„ μ–Έ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3. 이미 λ“€μ–΄μžˆλŠ” 값을 λ“±ν˜Έλ‘œ μž¬ν• λ‹Ή ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

function ν•¨μˆ˜(){
  var λ‚˜μ΄ = 23;
  console.log(λ‚˜μ΄); //κ°€λŠ₯
}

console.log(λ‚˜μ΄); //λΆˆκ°€λŠ₯

λ³€μˆ˜λŠ” μ‚¬μš©κ°€λŠ₯ λ²”μœ„λΌλŠ” 것이 μžˆμŠ΅λ‹ˆλ‹€.

ν•¨μˆ˜ μ•ˆμ—μ„œ λ³€μˆ˜λ₯Ό λ§Œλ“€μ—ˆμ„ 경우,

ν•¨μˆ˜ μ•ˆμ—μ„œλ§Œ μ‚¬μš©κ°€λŠ₯ν•˜κ³  

λ°–μ—μ„œ 좜λ ₯ μ‹œ μ—λŸ¬λœΉλ‹ˆλ‹€.

 

ν•¨μˆ˜ λ°”κΉ₯μ—μ„œ λ§Œλ“  λ³€μˆ˜λ§Œ μ‚¬μš©κ°€λŠ₯ν•©λ‹ˆλ‹€.

 

2. var, let, const μž¬μ„ μ–Έ, μž¬ν• λ‹Ή 차이
let λ‚˜μ΄ = '23';
const λ‚˜μ΄ = 23;

 

let, const문법을 써도 varκ³Ό 같이 좜λ ₯λ©λ‹ˆλ‹€.

 

let λ‚˜μ΄ = '23';
let λ‚˜μ΄; //μ—λŸ¬λœΈ

ν•˜μ§€λ§Œ let, constλŠ” μž¬μ„ μ–Έμ΄ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

 

+)

μž¬μ„ μ–Έμ΄ λΆˆκ°€λŠ₯ν•œlet, const의 μ“°μž„:

μ½”λ“œλ₯Ό 길게 μž‘μ„±ν•  일이 생겼을 λ•Œ, λ³€μˆ˜ λ§Œλ“  것을 또 λ§Œλ“€κ³ 

그런 μ‹€μˆ˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그것을 λ°©μ§€ν•΄μ€λ‹ˆλ‹€.

 

const λ‚˜μ΄ = 23;
λ‚˜μ΄ = 23;  //μ—λŸ¬λœΈ

 

constλŠ” μž¬ν• λ‹Ήλ„ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

 

+)

μž¬ν• λ‹Ήμ΄ λΆˆκ°€λŠ₯ν•œ const의 μ“°μž„:

값을 μˆ˜μ •ν•˜λ©΄ μ•ˆλ˜λŠ” λ³€μˆ˜λ₯Ό λ§Œλ“€λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

 

if (true) {
  let 이름 = 'lim';
}

console.log(이름); //μ—†λ‹€κ³  λ‚˜μ˜΄

 

letκ³Ό constλŠ” λ²”μœ„κ°€ 더 μ’μ•„μš”.

λͺ¨λ“  μ€‘κ΄„ν˜Έκ°€ λ²”μœ„μž…λ‹ˆλ‹€. if, function, λ‚˜μ€‘μ— 배울 for반볡문 

μ΄λŸ°κ²ƒμ€ μ€‘κ΄„ν˜Έκ°€ μžˆμŠ΅λ‹ˆλ‹€. 

μ€‘κ΄„ν˜Έ μ•ˆμ—μ„œ λ§Œλ“  let, const λ³€μˆ˜μ˜ 경우

μ€‘κ΄„ν˜Έλ₯Ό λ²—μ–΄λ‚˜λ©΄ 

μ—†λ‹€κ³  λœΉλ‹ˆλ‹€.

 

3. 정리

 

var Function-scoped μž¬μ„ μ–Έ γ…‡ μž¬ν• λ‹Ή o
let {Block-scoped} μž¬μ„ μ–Έ x μž¬ν• λ‹Ή o
const {Block-scoped} μž¬μ„ μ–Έ x μž¬ν• λ‹Ή x