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;

 

 

출처

- https://juniordev-team.tistory.com/6

- https://poiemaweb.com/es6-block-scope

728x90
반응형