-
var, let, const 차이점 (블록 스코프, 함수 스코프)자바스크립트 2021. 10. 4. 22:09
var 와 let 의 차이점
let 은 여러 번 선언할 수 없다.
let hogumachu = "hogumachu"; let hogumachu = "not hogumachu"; // ReferenceError: Identifier 'hogumachu' has already been declared
이미 let 으로 선언되어 있기 때문에 에러가 발생한다.
var 는 가능하다.
let 은 선언하기 전에 사용이 불가능하다.
console.log(hogumachu); // ReferenceError: Cannot access 'hogumachu' before initialization let hogumachu = "hogumachu";
초기화 되기 전에 사용을 하여서 에러가 발생한다.
console.log(hogumachu); // undefined var hogumachu = "hogumachu";
var 는 가능하다.
var 는 호이스팅 (hoisting) 이 되므로 선언 전에 사용이 가능하다.
let 과 const 는 블록 스코프(Block scope) 이고 var 는 함수 스코프(Function scope) 이다.
if (true) { let hogumachu = "hogumachu"; } console.log(hogumachu); // ReferenceError: hogumachu is not defined
let 을 if 문 블록 안에 넣어서 생성을 하였고
if 문 밖에서 호출을 하였는데 에러가 발생하였다.
바로 블록 범위로 할당이 되고 해제되기 때문이다.
if (true) { var hogumachu = "hogumachu"; } console.log(hogumachu); // hogumachu
반면에 var 는 if 문 밖에서 호출을 하였는데 정상적으로 출력되었다.
function testFunc() { var hogumachu = "hogumachu" } console.log(hogumachu); // ReferenceError: hogumachu is not defined
var 를 함수 안에서 넣어서 생성을 하였고
함수 밖에서 호출을 하였는데 에러가 발생하였다.
바로 var 는 함수 범위로 할당이 되고 해제되기 때문이다.
const
const 는 값을 변경할 수 없다.
선언과 초기화 그리고 할당이 동시에 진행된다.
그 외 조건은 위의 let 과 동일하다.
'자바스크립트' 카테고리의 다른 글
[프로그래머스] 게임 맵 최단거리 Javascript (0) 2021.10.06 Boolean 형 변환 (0) 2021.10.03 HTML 에서 JavaScript 불러오기 (0) 2021.10.03