동적 타입 언어와 정적 타입 언어 (동적 타입 언어 주의할점🚫)

boyeonJ·2023년 6월 13일
0

JavaScript Basic

목록 보기
4/24
post-thumbnail

동적 타입 언어와 정적 타입 언어

언어는 변수가 데이터 타입을 가지는지, 변수의 데이터 타입이 변경될 수 있는지에 따라 동적 타입 언어와 정적 타입 언어로 나뉩니다.

정적 타입 언어 : C언어, 자바, 코틀린, 고, 하스켈..
동적 타입 언어 : 자바스크립트

정적 타입 언어

정적 타입 언어의 변수는 변수에 미리 타입을 선언하고, 변경할 수 없습니다. 컴파일 시점에 타입 체크를 수행한 후 만약 통과하지 못하면 프로그램 실행 자체를 막아 런타임에 발생하는 에러를 줄입니다. (일관성을 강제)

동적 타입 언어

동적 타입 언어는 변수의 타입을 선언하지 않고, 할당에 의해 타입이 결정(타입 추론)이 됩니다. 또한 재할당에 의하여 타입이 자유롭게 변경될 수 있습니다. 즉, 변수의 타입이 아닌 변수에 할당된 값의 타입이라고 말하는것이 정확합니다.

🚫 변수는 기본적으로 타입을 가지지 않습니다. => undefined

var foo;
console.log(typeof foo); //undefined

foo = 3;
console.log(typeof foo); //number

foo = "Hello";
console.log(typeof foo); //string

🚫 동적 타입 언어을 사용시 주의할점!

동적 타입 언어의 변수는 언제나 변경될수 있기 때문에 변화하는 변수의 값을 추적하기 어렵습니다. 또한, 자바스크립트 엔진이 암묵적으로 타입을 자동 변환하기도 하는데, 이때 잘못 예측하여 변환할시 오류가 발생할 수 있습니다.

🤓 결국! 동적 타입언어는 유연성은 높지만, 신뢰성이 떨어집니다. 따라서 다음과 같은 점을 기억하며 사용하는 것이 좋습니다.

  • 변수는 꼭 필요한 경우에만 사용 : 변수는 많아질수록 오류 발생 가능성이 높아진다.
  • 변수의 유효범위(스코프)는 최대한 좁게
  • 전역 변수 사용은 최소한으로 : 어디에서나 참조/변경 할 수 있는 전역 변수는 프로그램 복잡성을 높여 흐름을 추적하기 어렵게 만들어 오류의 원인을 특정하기 어렵게 만듭니다.
  • 변수보다는 상수를 사용 : 변수보다는 상수를 사용하여 변수의 변경을 억제합니다.
  • 네이밍은 정확히 : 변수에 의미를 정확히 파악할 수 있는 네이밍을 해줍니다.

0개의 댓글