자바스크립트는 동적 타입을 가진 언어(인터프리터 언어)
<-> 정적 타입 언어(컴파일 언어) : 자바, C
- 특정 값이 할당된 변수에 그와 다른 자료형의 값을 넣는 것이 가능
- 자유롭지만 그만큼 자료형 관련 오류들에 취약함
let job = '학생';
let age = 17;
console.log(job, age); // 학생 17
console.log(typeof age); // number
// 숫자 값이 들어있던 age에 문자열 값을 넣는 것이 가능
age = '열일곱';
console.log(age); // 열일곱
console.log(typeof age) // string
자료형의 다름으로 일어날 수 있는 오류
- 특정 자료형에 대해서만 사용될 수 있는 기능에서의 오류 (런타임 오류)
// 주어진 문자열을 대문자로 바꾸는 함수
// 다른 자료형에 대한 예외처리 없음
function getUpperCase(str) {
return str.toUpperCase();
}
console.log(getUpperCase('hello')); // HELLO
문자열이 아닌 다른 자료형을 입력했을 때
// ⚠️ 오류 발생!
console.log(getUpperCase(1));
- 의도와 다른 연산이 될 때의 오류(논리 오류)
// 원하는 연산
1 + 1 // 2
// 타입을 잘못 입력했을 때
'1' + 1 // '11'
정적 언어(컴파일 언어)는 컴파일을 진행하며 자료형의 오류를 검수하지만
동적 언어(인터프리터 언어)는 그냥 실행되어 사용자에게 주어지기 때문에 오류가 발생할 수 있고,
의도와 다른 결과가 나오기도 한다.
정리참조
https://www.yalco.kr/@javascript/2-2/
'JavaScript' 카테고리의 다른 글
문자열에 사용되는 연산자 (0) | 2023.03.03 |
---|---|
문자열(string) - 텍스트 데이터 (0) | 2023.03.01 |
자료형 - 데이터의 종류 (0) | 2023.03.01 |
함수에서 파라미터를 사용하는 이유 (0) | 2022.06.06 |
Deleting To Dos part 1 (0) | 2022.03.22 |