본문 바로가기
JavaScript

자료형과 정적 / 동적 타입

by chanfficial 2023. 3. 1.

자바스크립트는 동적 타입을 가진 언어(인터프리터 언어)

<-> 정적 타입 언어(컴파일 언어) : 자바, 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/

 

자료형과 정적, 동적 타입

어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주 묻는 질문들의 답변들, 예제 코드들을 얄코에서 확인하세요!

www.yalco.kr

 

'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