본문 바로가기
바닐라코딩 사전학습/추가공부 및 부가설명

크롬 콘솔모드에서 let변수만 재선언이 되는 이유

by 꼬마보노 2021. 12. 24.

비주얼 스튜디오 코드를 이용해서 코드를 작성하는 중에 내가 제대로 작성하고 있나 확인할 겸 크롬 콘솔모드에서 코드를 확인하곤 한다. 분명 let으로 선언한 변수는 재선언이 안된다고 했는데 에러메세지없이 그대로 재할당이 되었다!

왜 이러는지 구글링 한 결과 아래와 같은 답을 얻을 수 있었다.

 

일반 스크립트 실행과 콘솔 모드에는 약간의 문법 차이가 있다.
전자에서는 표준 JS문법을 따르기 때문에 let을 재선언하려고 하면 오류를 출력한다. 후자는 예외적으로 콘솔모드의 interactive한 특징 때문에 재선언을 허용한다.

 

> let a; let a;  // 한 줄에 재선언하는 경우는 재선언 불가
< Uncaught SyntaxError: Identifier 'a' has already been declared

> let a;
> let a; // 다른 줄에서 재선언은 가능

위의 코드처럼 콘솔모드에서는 한 줄에 재선언을 하는 경우에는 에러를 출력하지만 다른 줄에 변수를 재선언하는 경우는 허용해준다.
또한 하나의 변수에 대해 변수의 종류를 바꾸는 행위(var, let, const바꾸기)는 콘솔모드에서도 금지되어있다.

 

참고)

https://velog.io/@nittre/JavaScript-%EC%BD%98%EC%86%94-%EB%AA%A8%EB%93%9C%EC%97%90%EC%84%9C-let%EC%9D%80-%EC%9E%AC%EC%84%A0%EC%96%B8%EC%9D%B4-%EB%90%98%EB%8A%94%EB%8D%B0-const%EB%8A%94-%EC%95%88%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0