Javascript의 변수 선언: var, let, const의 차이점
Welcome file ES6 등장 이전의 var 변수 선언 ES6 (ECMA Script 6/ECMA Script 2015) 등장 이전, 자바스크립트에서 변수를 선언하려면 var 를 사용해야 했습니다. 1 문제는, var 를 사용해 선언한 변수에 적용되는 스코프였습니다. var 선언의 스코프 예를 들어보겠습니다. function A() { } 가 있고, temp 라는 변수가 해당 함수 외부에 선언되었다고 가정하겠습니다. var temp = 'temp value' ; function A ( ) { // code } 위 예제 코드에서 함수 A 외부에 선언된 temp 변수는 전역 스코프입니다. 즉, 해당 변수는 어디서든 접근이 가능하다는 얘기입니다. 그럼 다음과 같은 코드는 어떻게 될까요? var temp = 'temp value' ; function A ( ) { var insideTemp = 'inside value' ; } console . log ( insideTemp ) ; 이 경우에는 temp 변수는 글로벌 스코프로, insideTemp 변수는 A 함수 내부 스코프로 정의되었기 때문에 console.log 로 insideTemp 변수를 출력하려 하면 정의되지 않은 변수를 출력하려 했기에 에러가 나게 됩니다. 불명확한 재정의 일단 스코프는 위와 같다고 기억만 하시고 이 섹션을 읽어보세요. 이 섹션에서 설명하는 내용도 매우 중요합니다. 일단 var 로 정의된 변수는, 언제든지 어떻게든지 어느 스코프에서든지 재정의가 가능합니다. 이게 무슨 소리냐고요? 다음과 같은 행동이 아무런 에러 없이 가능하다는 얘기입니다. var a = 1 ; console . log ( a ) ; // > 1 var a = 'abc' ; console . log ( a ) ;