[3회] 자바스크립트&타입스크립트 / Let Var Const 차이점
1. 자바스크립트와 타입스크립트의 차이점을 설명해주세요.
자바스크립트는 동적타입의 인터프리터 언어로 런타임에서 오류를 발견할 수 있습니다.
반면 타입스크립트는 정적타입의 컴파일언어로 컴파일타임에 오류를 발견할 수 있습니다.
주요 차이점은 타입시스템의 유무입니다.
자바스크립트는 빠른 코드 작성과 작고 간단한 프로젝트에는 적합하지만,
타입스크립트는 대규모 프로젝트와 유지보수가 필요한 프로젝트에는 더욱 적합합니다.
<동적타입 vs 정적타입>
동적타입은 변수의 타입이 실행 시간에 결정되는 것을 의미합니다. 즉, 변수를 선언할 때 타입을 지정하지 않습니다.
반면 정적타입은 변수의 타입을 컴파일 시간에 결정하는 것을 의미합니다. 즉 변수를 선언할 때 반드시 타입을 지정해야 합니다.
<인터프리터 언어 vs 컴파일 언어>
인터프리터 언어는 컴파일 과정 없이 코드를 한 줄씩 읽어가며 실행하는 언어를 의미합니다.
반면 컴파일 언어는 코드가 실행되기 전에 컴파일러에 의해 기계어로 번역되는 언어를 의미합니다.
<런타임 vs 컴파일>
런타임은 프로그램이 실행되는 시간을 의미합니다.
반면에 컴파일은 작성된 코드를 컴퓨터가 실행하는 기계어로 변환하는 과정을 의미합니다.
🔥꼬리질문 : 타입스크립트는 어떠한 과정을 통해 자바스크립트로 변환되는 걸까요?🔥
타입스크립트는 타입스크립트 컴파일러에 의해 자바스크립트로 변환됩니다. 이 과정은 다음과 같은 단계로 이루어집니다.
1. 타입스크립트 컴파일러는 타입스크립트 소스 코드를 읽어들입니다.
2. 컴파일러는 소스 코드의 문법을 검사하고, 타입 검사를 수행합니다. 이 과정에서 오류가 발견되면 컴파일러는 오류 메시지를 출력합니다.
3. 문법 검사와 타입 검사가 성공적으로 완료되면, 컴파일러는 타입스크립트 소스 코드를 자바스크립트 코드로 변환합니다.
4. 변환된 자바스크립트 코드는 실행 파일 형태로 저장됩니다.
이렇게 타입스크립트는 컴파일 과정을 거쳐 자바스크립트로 변환되며,
변환된 자바스크립트 코드는 일반적인 자바스크립트 코드처럼 실행됩니다.
🔥꼬리질문 : ?🔥
아직 작성중
2. Var, Let, Const의 차이점을 설명해주세요.
Var는 동일한 이름으로 중복해서 변수 선언이 가능합니다.
이와 같은 경우 마지막에 할당된 값이 변수에 저장되어 에러없이 각자 다른 값이 출력됩니다.
let과 const는 var의 중복선언을 보완하기 위해 등장했습니다.
let은 중복 선언은 가능하지만 값의 재할당은 불가능합니다.
const는 중복 선언과 값의 재할당 모두 불가능합니다.
그래서 주로 const는 상수를 선언하는 키워드로 사용됩니다.
var = 재선언O, 재할당O
let = 재선언X, 재할당O
const = 재선언X, 재할당X
var는 var로 선언한 변수는 동일한 이름으로 여러 번 중복해서 선언이 가능합니다.
이와 같은 경우, 마지막에 할당된 값이 변수에 저장되며 중복으로 사용될 경우 에러 없이 각기 다른 값이 출력 됩니다.
let과 const는 var의 중복으로 선언하는 것을 보완하기 위해 등장 했습니다.
let은 중복 선언은 불가능하지만 값을 재할당하는 것은 가능합니다.
const는 let과 마찬가지로 중복 선언은 불가능하고 값 재할당 또한 불가능하다는 특징이 있습니다.
그래서 주로 const는 상수를 선언하는 키워드로 사용됩니다.
🔥꼬리질문 : TDZ와 호이스팅에 대해 설명해주세요.🔥
TDZ(Temporal Dead Zone)는 let과 const로 선언된 변수가 초기화되기 전까지의 시간을 의미합니다.
TDZ 내에서 해당 변수에 접근하려고 하면 ReferenceError가 발생합니다.
예를 들어, 다음 코드를 살펴보겠습니다.
console.log(x); // ReferenceError: x is not defined
let x = 10;
해당 코드에서 x는 let으로 선언되었지만 초기화되기 전에 접근하려고 하므로 ReferenceError가 발생합니다.
호이스팅(hoisting)은 변수와 함수 선언이 해당 스코프의 최상단으로 끌어올려지는 현상을 의미합니다.
호이스팅은 var로 선언된 변수와 함수 선언문에서 발생합니다.
예를 들어, 다음 코드를 살펴보겠습니다.
console.log(x); // undefined
var x = 10;
위 코드에서 x는 var로 선언되었으므로 호이스팅이 발생하여 변수 선언이 스코프의 최상단으로 끌어올려집니다.
따라서 x는 선언되었지만 초기화되지 않았으므로 undefined가 출력됩니다.
🔥꼬리질문 : ?🔥
아직 작성중