[기술면접준비_JS] var, let, const의 차이점 && Scope

셀레스틴 허·2021년 4월 26일
0
post-thumbnail
post-custom-banner

모의 면접 때 받은 질문 follow-up Question
👤 : var let const의 차이점을 말해주세요

var, let const?

기본 개념

var는 함수 레벨 스코프
let, const는 블럭 레벨 스코프이다.

차이점

  1. 변수 선언
    ✅ var로 선언한 변수는 선언 전에 사용 가능
    ⛔️ let, const는 에러 발생
    var, let, const, class, function 모두 hoisting 가능하다. 다만 var의 경우 호이스팅 되면서 초기값이 없어도 자동으로 undefined를 초기값으로 메모리에 할당된다. 그러나 let, const의 경우 hoisting이 되면서 초기값이 없으면 자동으로 초기값을 메모리에 할당하지 않는다. 선언 전에 메모리에 해당 변수가 존재하지 않는다.

    변수가 선언되고 해당 변수에 값이 할당되기 전까지를 TDZ라고 함. Temporal Dead Zone의 약자로 변수가 만들어지지고 TDZ가 생성되지만 코드 실행이 변수가 실제 있는 위치에 도달할 때까지 엑세스 할 수 없음. let, const에 값이 할당되면 TDZ를 떠난 상태며 변수 사용할 수 있음.

  2. 변수명
    ✅ var는 이미 존재하는 동일한 변수명 선언 가능
    ⛔️ let, const는 에러 발생

  3. 초기값
    ✅ var, let은 변수 선언시 초기값 안줘도 됨
    ⛔️ const는 반드시 할당해야함

  4. 재할당
    ✅ var, let는 값을 재할당할 수 있음
    ⛔️ const는 한번 할당한 값은 변경할 수 없음(객체 속 프로퍼티 변경은 막지 못함)
    벼누를 가리키는 값 자체를 변경하려고 하면 에러가 발생하지만 객체 내 프로퍼티의 추가, 변경, 삭제는 문제 없다.

    만약 객체의 프로퍼티를 변경하고 싶지 않으면 Object.freeze()를 쓰면 된다

모의 면접 때 받은 질문 follow-up Question
👤 : scope에 대해 알려주세요

Scope

스코프 종류

  1. 전역 스코프
    전역에서 접근할 수 있음
  2. 지역 스코프
    해당 지역에서만 접근할 수 있음
  3. 함수 스코프
    함수 몸체 안에서만 접근할 수 있음

블록 스코프: 중괄호로 둘러 싸인 부분을 블록이라고 함

var a = 1; // 전역 스코프
function print() { // 지역(함수) 스코프
 var a = 111;
 console.log(a);
}
print(); // 111
console.log(a); // 1

기존 var같은 경우 함수 스코프를 가졌기 때문에 함수 내에서만 지역 변수가 유지되는 문제가 있었지만 ES6이 등장한 다음부터 let, const 키워드가 추가되면서 함수가 일반 블록에서도 지역변수로 선안할 수 있게 됨

Reference:
https://medium.com/@yeon22
https://velog.io/@ehgks0000/Node-js-%EB%A9%B4%EC%A0%91%EC%A4%80%EB%B9%84

profile
Software Developer / 고통은 필연, 괴로움은 선택
post-custom-banner

0개의 댓글