javascriptπŸͺ“/μžλ°”μŠ€ν¬λ¦½νŠΈ 곡뢀

μžλ°”μŠ€ν¬λ¦½νŠΈ λ³€μˆ˜μ„ μ–Έ : let vs var / const

hyojinny 2023. 8. 29. 15:56

variavle λ³€μˆ˜ > 변경될 수 μžˆλŠ”κ°’

- read / write = λ©”λͺ¨λ¦¬μ— μ €μž₯λ˜μ–΄ μ“°κ³  μ½λŠ”κ²ƒ κ°€λŠ₯ 

- λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  재 할당이 κ°€λŠ₯ν•˜λ‹€.


λ³€μˆ˜μ˜ global scope 와 block scope 

 

 

let 의 global scope - μ‹€ν–‰μ‹œ μ²˜μŒλΆ€ν„° λκΉŒμ§€ λ©”λͺ¨λ¦¬ μ‚¬μš©

let name = 'ellie'; // nameμ΄λž€ λ³€μˆ˜μ— ellie μ„ μ–Έ
name = 'hello'; // λ³€μˆ˜name에 hello μž¬ν• λ‹Ή

console.log('name: ', name); // ν™•μΈμ‹œ name = hello 가됨

 

 

let 의 block scope {} - λΈ”λŸ­μ•ˆμ˜ μ½”λ“œ μž‘μ„±μ‹œ λΈ”λŸ­λ°–μ—μ„  λΈ”λŸ­μ•ˆμ˜ λ‚΄μš©μ„ 읽지λͺ»ν•¨

(λΈ”λŸ­λ°–μ—μ„œ μž‘μ„±λœ μ½”λ“œλ“€μ€ global scope 둜 μ–΄λ””μ„œλ‚˜ μ ‘κ·Ό κ°€λŠ₯)

{
  let name2 = 'hyojin';
  name2 = 'hyo';
}

 


λ³€μˆ˜μ„ μ–Έμ‹œ let / var μ°¨μ΄ (*var μ‚¬μš©κΈˆμ§€)

 

- μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ½”λ“œ μž‘μ„±μ‹œ λ³€μˆ˜ μ„ μ–Έ ν›„ κ°’ μž¬ν• λ‹Ήμ΄ μ›μΉ™μ΄λ‚˜ var 은 이원칙이 λ¬΄μ‹œλœλ‹€.

console.log(age);
age = 4;
var age;

 

μœ„μ™€ 같이 값이 λ¨Όμ € ν• λ‹Ήλœ ν›„ λ³€μˆ˜κ°€ λ‚˜μ€‘μ— λ‚˜μ˜€κ³  console.log 둜 λ¨Όμ € 찍어보면 

 

var console.log(age); κ°€ undefind 둜 읽힘
hoisting λ¬΄μ‹œ > global scope 둜 λ¬Έλ²•μž‘μ„±μ΄ μ΄ˆκΈ°ν™”λ˜ 맨 μƒλ‹¨μœΌλ‘œ λ‚˜μ˜΄
{} block scope λ¬΄μ‹œ 
let console.log(age); κ°€ μ—λŸ¬λ‘œ λ‚˜μ˜΄ (정상)

 


const 

- reed only λ©”λͺ¨λ¦¬μ—μ„œ μ½λŠ”κ²ƒλ§Œ κ°€λŠ₯

- λ³€μˆ˜ μž¬ν• λ‹Ή λΆˆκ°€ 

 

λ³€μˆ˜μ˜ 값이 계속 λ°”κ»΄μ•Όν•  μ΄μœ κ°€ μ—†λ‹€λ©΄ const μ‚¬μš© ꢌμž₯


const μ‚¬μš©λ²•

//const 둜 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ μž¬μ‚¬μš© ν• μˆ˜ μ—†μ§€λ§Œ
const ellie = 'ellie';
const ellie = { name: 'ellie', age: 20 };
//이 ellie λŠ” const 둜 지정이 λ˜μ–΄μžˆμ–΄μ„œ ν•œλ²ˆ ν• λ‹Ήλœ 이 μ˜€λΈŒμ νŠΈλŠ” λ‹€λ₯Έ 였브젝트둜 ν• λ‹Ή λΆˆκ°€
//단 ellie 였브젝트 μ•ˆμ— nameκ³Ό age 둜 λ³€μˆ˜κ°€ μžˆμ–΄μ„œ ellie.name 으둜 λ³€μˆ˜μ— μ ‘κ·Όν•΄ μž¬ν• λ‹Ή κ°€λŠ₯

ellie.name = 'ellllllllie';
ellie.age = 30;

console.log('ellie: ', ellie);

 console.log 둜 ν™•μΈμ‹œ λ³€μˆ˜λ‘œ μž¬ν• λ‹Ή ν•œκ²ƒμ„ 확인할 수 μžˆλ‹€.