본문 바로가기
컴퓨터/Frontend

[Javascript] var와 let의 차이

by stdFrog 2023. 3. 15.

var와 let은 모두 변수를 선언할 때 사용되는 키워드이자 선언자이다.
실행중에 변경될 수 있는 값을 담을 때 사용하는 두 타입은 한 가지 차이가 있다.

var는 중복 선언을 허용하고 let은 중복 선언을 허용하지 않는다.
더 자세히 얘기해보면, var는 동일한 이름의 변수를 무한정 만들어 사용할 수 있으며
let은 이러한 중복된 이름의 변수를 허용하지 않는다.

예를 들어보자.

var A = 10;
....
....
....
var A = 20;

위와 같은 구문이 과연 적법한가 생각해 볼 필요가 있다.

 

C에서는 위와 같이 재선언된(redeclared) 변수를 컴파일러가 알아서 구분하고 '재선언된 변수가 있어' 하고 알려준다.

만약 위 코드가 컴파일되려면 후미의 A가 지역적(local)일 때 가능할 것이다.

// Compiler gcc 8.1.0
#include <stdio.h>

int a;

int main()
{
        double a = 1.0;
        if(a >= 1.0){
                a = 10;
        }
        printf("%f", a);
}

함수의 지역적인 변수 선언을 제외하고 전역적으로 위와 같은 상황이 발생한다면 어떻게 될까?

 

위 변수를 참조하는 함수가 있다면 잘못된 데이터가 전달될 가능성이 있으며 이로 인해 엉뚱한 결과가 출력될 가능성이 있다.

 

조금 다른 얘기지만, 오버로딩이 가능한 C++ 함수에선 변수의 논리적 의미가 같고 타입이 명확히 다른 경우 타입에 맞춰 상승(또는 하강)변환을 컴파일러가 알아서 해준다.

 

JS에선 컴파일러의 도움을 받을 수 없기 때문에 var 키워드의 사용을 지양하며 let과 const 키워드 사용이 권고된다.

반응형

'컴퓨터 > Frontend' 카테고리의 다른 글

[Javascript] 객체와 프로퍼티  (0) 2023.03.15
[Javascript] 콜백함수  (0) 2023.03.15
[Javascript] 호이스팅  (0) 2023.03.15
[Javascript] 백틱과 템플릿 리터럴  (0) 2023.03.15
[Javascript] 함수 표현식  (0) 2023.03.15

댓글