정적타입언어

  • 컴파일시 데이터 타입이 결정되는 언어
  • 정적타입언어는 변수 선언시 데이터 타입을 사전에 선언해야함, 이를 명시적 타입 선언이라고 함.
  • 컴파일 시점에 타입 체크(선언한 데이터 타입에 맞는 값을 할당했는지 확인)를 수행하는데, 만약 타입체크를 통과하지 못하면 에러가 발생하고 프로그램이 실행중지된다.
    이를 통해 타입의 일관성을 강제함으로써, 더욱 안정적인 코드 구현이 가능하고, 런타임시 발생하는 에러를 줄일수있다!
  • 대표적인 정적타입언어로는 C, C++, Java, Kotlin, Go 등이 있음.
  • 정적 타입언어는 변수 선언시점에 변수 타입이 결정되고, 변수 타입변경은 불가능하다.

동적타입언어

  • 런타임시 데이터 타입이 결정되는 언어
  • 자바스크립트는 변수선언시 타입을 선언하지 않고 var, let, const와 같은 키워드를 사용해 변수 선언만 한다.
  • 자바스크립트는 값이 할당하는 시점에 변수의 타입이 동적으로 결정되고, 변수 타입은 언제든지 변경 가능하다.
    즉, 선언이 아닌 할당에 의해 타입이 결정되는데 이러한 특징을 동적타이핑이라고 함!
  • 대표적인 동적타입언어로는 JavaScript, Python, PHP, Ruby 등이 있다.
  • 자바스크립트는 개발자에 의도와 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동으로 변환되기도 한다.
    예를 들어, 숫자타입변수라고 예측했지만 사실은 문자열 타입의 변수일 수도 있다.
    이와같은 이유로 안정적인 프로그램을 만들기 위해 타입을 체크하는 경우도 생기며, 이는 매우 번거롭고 코드의 양도 증가시킨다.
  • 동적타입언어는 유연성(flexibility)은 높지만 신뢰성(relability)은 떨어진다고 볼수 있음.

자바스크립트에서 변수사용시 주의할 점

  • 변수는 꼭 필요한 경우에 제한적으로 사용한다.
    변수값의 재할당에 의해 언제든지 변경가능하다. 이로인해 동적타입인 자바스크립트는 타입을 잘못예측해 오류가 발생할 가능성이 커진다.
  • 변수의 유효범위(스코프)는 최대한 좁게 만들어 변수의 부작용을 억제해야함!
  • 전역변수는 최대한 사용하지 않도록 한다.
    전역변수는 프로그램의 복잡성을 증가시키고, 처리흐름을 추적하기 어렵게 만들고 오류가 발생할 경우 오류의 원인을 특정하기 어렵게 만든다.
  • 변수보다는 상수를 사용해 값의 변경을 억제한다.
  • 변수 이름은 변수의 목적이나 의미를 파악할수 있도록 네이밍한다.
    개발자의 의도를 나타내는 명확한 네이밍은 코드를 이해하기 쉽게 만들고 이는 협업과 생산성향상에 도움을 준다.

참조(모던 자바스크립트 Deep Dive)