const, let, var 의 차이점

박슬기·2022년 9월 26일
0

기술면접

목록 보기
3/3

const, let, var

세 가지 모두 변수를 선언할 때 사용되는 키워드이며, ES5에서 var의 문제점을 보완하기 위해 ES6에서 나온 것이 letconst 입니다.

var함수 레벨 스코프의 한계로 같은 스코프 내 중복 선언이 허용되며, 예기치 못한 값 반환과 변수 값 재할당이 됩니다. letconst블록 레벨 스코프let은 변수 중복 선언이 불가하지만, 재할당은 가능합니다. constlet과 마찬가지로 재선언과 재할당 모두 불가능하다는 특징을 갖고 있습니다.

식별자

  • 변수 이름, 함수 이름, 클래스 이름 등을 뜻함
  • 어떤 값을 구별하여 식별해낼 수 있는 고유한 이름
  • 어떤 값을 구별할 수 있어야 하므로 유일해야 함
  • 하나의 값은 유일한 식별자에 연결되어야 함(name binding)
  • 모든 식별하는 자신이 선언 된 위치에 의해 다른 코드가 자신을 참조할 수 있는 스코프(유효범위)가 결정 됨

스코프

  • 식별하고 유효한 범위를 뜻함
  • 다른 언어와 달리 자바스크립트만의 스코프 특징이 별도로 있음
  • 매개변수와 전역변수는 스코프의 차이이다.
  • 자바스크립트 엔진은 스코프를 통해 어떤 변수를 참조할지 결정 → 스코프는 식별자를 검색할 때 사용하는 규칙
  • 같은 이름을 갖는 변수의 충돌을 방지시켜 줌
  • 스코프 내에서 식별자는 유일해야 하지만, 다른 스코프에서는 같은 이름 사용이 가능하다.
  • var 는 같은 스코프 내 중복 선언이 허용 되며, 의도치 않는 변수값 재할당 부작용이 있다.

함수 레벨 스코프

  • 함수 내에서 선언 된 변수는 함수 내에서만 유효하며 외부에서 참조 불가
  • 함수 내부에서 선언한 변수는 지역 변수
  • 함수 외부에서 선언한 변수는 전역 변수

블록 레벨 스코프

  • 모든 코드 블록 내에서 선언 된 변수는 해당 블록 내에서만 유효 하며, 외부에서 참조 불가
  • 코드 블록은 함수, if문, for문, while문, try/catch문 등을 뜻 함
  • 코드 블록 내부에서 선언한 변수는 지역 변수

렉시컬 스코프

  • 정적 스코프(static scope)라고도 표현
  • 함수를 어디서 정의했는지에 따라 함수의 상위 스코프를 결정
  • 대부분의 프로그래밍 언어가 렉시컬 스코프를 따름
  • 함수의 상위 스코프는 언제나 자신이 정의된 스코프이다.

코드의 문맥과 환경

렉시컬 환경? Lexical = 어휘의

  • 코드가 어디서 실행되면 주변에 어떤 코드가 있는지를 의미
  • 코드의 문맥은 렉시컬 환경으로 이루어짐
  • 렉시컬 환경을 구현한 것이 실행 컨텍스트
  • 모든 코드는 실행 컨텍스트에서 평가되고 실행 됨
profile
블로그 글을 옮겨오고 있습니다. 이 전 블로그 👉 dinobox.tistory.com

0개의 댓글