[위클리 페이퍼] - 4주차

ioioi·2023년 11월 12일
0

Weekly Mission

목록 보기
4/4
post-thumbnail

📌 var, let, const 를 중복 선언 허용, 스코프, 호이스팅 관점에서 서로 비교해 주세요.

📝 var

- 변수 선언

var example;  // 변수 선언문

선언단계초기화 단계동시에 진행된다.
선언단계를 통해 변수 이름을 등록하고, 초기화 단계를 통해 변수에 undefined를 할당해 초기화(최초로 값을 할당)한다.
👉 var 키워드로 선언한 변수는 어떠한 값도 할당하지 않아도 undefined라는 값을 가진다.

- 호이스팅

console.log(example);  // undefined

var example;  // 변수 선언문

자바스크립트 엔진은 변수 선언을 포함한 모든 선언문(변수 선언문, 함수 선언문 등)을 소스코드에서 찾아내 먼저 실행한다. 소스코드 평가 과정이 끝나면 비로소 변수 선언을 포함한 모든 선언물을 제외하고 소스코드를 순차적으로 실행한다.
👉 변수 선언문은 호이스팅에 의해 런타임 이전 단계에서 먼저 실행된다.

🔥 주의) 변수 선언은 런타임 이전에 먼저 실행되지만 값의 할당런타임에서 할당한다.
변수 선언과 할당을 하나의 문장으로 단축 표현해도 변수 선언, 값의 할당을 나누어서 실행한다.
👉 변수 선언 + 초기화 -> 값의 할당

console.log(example);  // undefined

var example = 10;  // 변수 선언 + 값 할당

console.log(example);  // 10

- 함수 레벨 스코프

같은 스코프 내에서 중복 선언이 허용되기 때문에 의도치 않게 변수값이 재할당되어 변경되는 부작용을 발생시킨다.

📝 let

중복 선언 허용하지않고 재할당만 가능
블록레벨 스코프
선언하기 전에 호출 시 Reference Error 발생
비어있는 값을 부여하면 undefined 반환

📝 cosnt

중복선언, 재할당 불가
하지만 객체를 할당하고 주소값을 참조하게 된다면 값의 변경이 가능해짐

profile
UIUX/Frontend

0개의 댓글

관련 채용 정보