All Articles

TypeScript - 변수선언

이번에 공부할 내용은 TypeScript - 변수선언이다. 이 부분은 var와 ES6의 let/const의 명확한 차이, Scope, Closure, Hoisting, ES6의 Destructuring 개념을 잘 알고 있다면, JavaScript와 다를 것이 거의 없으므로 그냥 넘어가도 좋다.

혹시 잘 모른다면 아래를 참고해서 충분히 공부하자.

let 선언과 block scoping

JavaScript와 결과값이 다른 코드가 있어서 가져왔다.

function foo() {
    return a;
}

foo();

let a;

let 키워드는 hoisting이 되지 않으므로 위의 코드가 .js 로 저장됐다면 runtime 시에 Uncaught ReferenceError: Cannot access 'a' before initialization 에러가 뜬다. 그러나 .ts로 저장하고 컴파일된 코드를 보면 let a;var a;로 되어있다. 그래서 위의 코드는 에러가 나지 않으며, 변수 a가 hoisting 되어 foo()는 정상적으로 호출이 되고 undefined를 return한다.