[자바스크립트] let, var , const 요약

2024. 2. 19. 17:47자바스크립트

 var 
 

 

 

 중복 선언o (마지막에 할당된 값)


 var a;  ( 선언만 한경우 :초기화x)  일경우  선언문이 무시됨(오류x)

var로 변수 선언시 함수 내부에서만 유효("지역변수 취급" if,for문 에서는 "전역 변수"로 취급

변수 호이스팅 발생

 

console.log(a);  // undefined

var a = 10;

console.log(a);  // 10



let,const

 

 

중복 선언x  (에러)


함수내부,if,for문 모두 "지역변수" 취급 

변수 호이스팅 발생 (다른방식)









 


var , let 

 


값의 "재할당" 가능   (중복선언과는 다름)

var a= 10;
a=20;
console.log(a)              //20


const 


값의 재할당 불가 ( 처음 선언시 초기값 필수)  , 상수취급

선언과 동시에 초기화 해야함 

블록레벨 스코프 


요약

 


 
var              는 함수 내부에 선언된 변수만 지역 변수로 인정 함수 레벨 스코프 , 중복선언o 호이스팅o , 값 재할당 가능


let          는  블록 내부에서 선언된 변수 모두 지역변수로 인정 ,블록 레벨 스코프 , 중복선언x,호이스팅o, 값 재할당 가능

 

const     는  블록 내부에서 선언된 변수  모두 지역변수로 인정 ,블록 레벨 스코프 , 중복선언x,호이스팅o  ,값 재할당 불가 

             값을선언과 동시에 초기화 해줘야함

 

 var, let, const

 

 

중복 선언 가능 여부
var : 중복 선언o (초기화)
 let,const : 중복 선언 불가

재할당 가능 여부
var, let : 값의 재할당이 가능
const : 값의    재할당 불가 
 var 또는 let과 는 다르게 , const 선언에서는 반드시 값을 선언과 동시에 정의

변수 스코프 유효범위


var : 함수 내부에 선언된 변수만 지역 변수로 인정하는 함수 레벨 스코프
let, const : 모든 블록 내부에서 선언된 변수까지 지역변수로 인정하는 블록 레벨 스코프

변수 호이스팅 방식
var: 변수 호이스팅이 발생 =   undefine   값
let, const: 변수 호이스팅이 발생  - > (다른방식)     : 값이 들어가지 않는다.(초기화전에는 참조가) 

 

 

전역객체 프로퍼티 
var : var로 선언된 변수는 전역객체(브라우저 환경의 경우 window)의 프로퍼티다.
let, const : let/const 로 선언된 변수는 전역객체 프로퍼티가 아니다.