본문 바로가기

WEB/JavaScript

[JavaScript] var를 사용하면 안되는 이유

var 변수는 ES6 문법 이전에 사용하던 mutual 변수 선언 방법이다. 하지만 이는 많은 문제가 있어서 현재는 let만 써야만 한다. 그럼 어떤 문제가 있을까?

 

1. Hoisting (변수를 선언하기도 전에 사용이 가능)

MDN에서 정의한 Hoisting의 의미를 알아보자. 

 

호이스팅(hoisting)이란, 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다.

 

쉽게 말해, 변수의 선언과 초기화를 분리한 후, 선언만 코드의 최상단으로 옮기는것이다.

var를 사용하면 다음과 같은 미친짓이 가능하다. 직접 확인해보자.

 

age = 7;
var age

 

위와 같이 변수를 선언하기도 전에 사용을 해도 정상적으로 출력이 가능하다. 이 경우 선언 전에도 에러가 나지 않아 사용이 가능하기 때문에 var는 사용하지 않는다. hoisting이 발생시키는 현상을 만드는 것은 잘못된 코딩 습관이다.

 

2. block scope를 무시함

자바스크립트에는 blcok scope라는 것이 있다. 주어진 블록 안에서만 사용이 가능하며 밖에서는 접근할 수 없는것이다.하지만 var변수는 이를 무시한다. 다음의 코드를 보자.

 

{
    age = 7;
    var age
}

console.log(age)

 

위와 같이 변수를 선언하면 block scope 기능에 의해 출력이 되지 않는 것이 정상이지만, var는 이를 무시하고 출력한다.

 

 

 

 

 

'WEB > JavaScript' 카테고리의 다른 글

[Javascript] json  (0) 2023.08.11
[Javascript] 클래스  (0) 2023.08.05
[JavaScript] html에서 js파일을 가장 효율적으로 포함하는 방법  (0) 2023.07.27
[JavaScript] Array.map() 메소드  (0) 2023.01.17
[JavaScript] 객체  (3) 2022.12.31