Programming/JavaScript & TypeScript
var VS let VS const 의 차이
Bonita SY
2020. 9. 14. 23:44
728x90
var
- es5의 변수 선언 방법
- Function-level Scope
let
- es6의 변수 선언 방법
- Block-level Scope
- 일반 변수
- 중복 선언시 TypeError 발생
const
- es6의 변수 선언 방법
- Block-level Scope
- 상수용 변수
- 처음 생성 시 초기값 필수 지정
함수 레벨 스코프 (Function-level scope)
- 함수 내에서 선언된 변수는 함수 내에서만 유효하며, 함수 외부에서 참조 불가능
- 함수 내부에서 선언한 변수는 지역 변수 / 함수 외부에서 선언한 변수는 전역 변수
- 자바스크립트
특징
- var 키워드 생략 허용
- 변수 중복 선언 허용
- 전역 변수 남용
블록 레벨 스코프 (Block-level scope)
- 모든 코드 블록(함수, if문, for문, while문, try/catch 문 등) 내에서 선언된 변수는 코드 블록 내에서만 유효
- 코드 블록 외부에서는 참조 불가
- 코드 블록 내부에 선언한 변수는 지역 변수
- 대부분의 프로그래밍 언어
호이스팅
- var 선언문이나, function 선언문 등을 해당 스코프의 선두로 옮긴 것처럼 동작하는 특성
예제)
console.log(foo); // undefined
var foo;
console.log(bar); // Error: Uncaught ReferenceError: bar is not defined
let bar;
출처
728x90