let, const 키워드와 블록 레벨 스코프

Jun Hyoung Park·2022년 7월 12일
0

var 키워드로 선언한 변수의 문제점

변수중복선언 허용

  • 중복이 가능
	var a= 50;
	var b =3;
	var b; // 초기화가 없으면 무시 됨 
	var a =100;
	console.log(a,b);//100, 3

함수 레벨 스코프

  • 함수 코드 블록만 지역 변수로 인정
  for(var a =0; a<n; a++){} // a는 전역변수

변수 호이스팅

  • var 키워드는 undefined로 초기화 된 상태에서 호이스팅이 가능하다
  • 가독성이 떨어지며 쓸데없다

let 키워드

변수중복선언 금지

  • 문법 에러

블록 레벨 스코프

  • 모든 코드 블록을 지역 스코프로 인정

변수 호이스팅

  • var는 선언과 초기화가 한번에 발생
  • let은 선언, 초기화 분리 진행
    • 런타임 이전에 선언되지만 초기화는 선언문에 도달했을 때 실행(일시적 사각지대)
    • 선언문 이전 참조시 에러 발생
console.log(a); //undefined 
var a = 20;

console.log(a); //error 
let a = 30;

전역객체와 let

  • var -> 전역객체 window의 프로퍼티
  • let -> 전역객체의 프로퍼티가 아님 -> 보이지 않는 개념적인 블록 내에 존재

const 키워드

  • 상수의 선언

선언과 초기화

  • 선언과 동시에 초기화 해야한다
  • 블록 레벨 스코프, let과 같이 변수 호이스팅이 발생하지 않는 것처럼 동작

재할당 금지

  • 상수이기 때문에

상수

  • 상태 유지와 가독성, 유지보수의 편의를 위해 적극적으로 활용
  • 잘 변하지 않으며 그 값이 의미하는 바를 시사할 수 있다
  • 대문자로 이름 설정, 단어가 많으면 _ 사용

const 키워드와 객체

  • 참조 값은 변경되지 않지만 재할당 없이 값을 변경할 수 있기 때문에 값은 변경이 가능하다

var vs let vs const

  • let -> 재할당
  • const -> 고정
profile
프론트엔드 지망생

0개의 댓글