정적 타입 언어와 정적 타입 언어 변수의 데이터 타입이라는 차이점을 가지고 있다 차이점을 말하기에 앞서 데이터 타입이란건 무엇이며 왜 필요한것일까?
👩🏫데이터 타입이란?
데이터 타입은 프로그래밍 언어에서 사용하는 데이터의 종류
자바스크립트의 데이터 타입은 총 8개이다
원시 타입 (primitive data type) : 변경 불가능한 값
- boolean
- null
- undefined
- number
- string
- symbol (ES6에서 추가)
- Bigint(ES8에서 추가)
객체 타입 (object/reference type) : 이름과 값을 가지는 데이터를 의미하는 프로퍼티(property)와 동작을 의미하는 메소드(method)를 포함할 수 있는 독립적 주체 원시값을 제외한 나머지는 다 객체 타입이다
👩🏫 데이터 타입이 필요한 이유?
자바스크립트 엔진은 데이터 타입 즉 값의 종류에 따라 정해진 메모리 공간을 확보한다
-> 변수에 할당되는 값의 데이터 타입에 따라 확보해야할 메모리 공간의 크기가 결정 됩니다.
- 값을 저장할 때 확보해야 하는 메모리의 공간의 크기 을 결정하기 위해
- 값을 참조할 때 한 번에 읽어 들어야 할 메모리 공간의 크기를 결정하기 위해
- 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해
-> 정리하자면 메모리 공간의 크기와 할당할 수 있는 값을 컴퓨터와 개발자에게 알려주는 역할을 합니다
정적 타입(static/strong type)의 언어와 변수
정적 타입의 언어는 변수를 선언할 때 변수에 할당할 수 있는 값의 종류, 즉 데이터 타입을 사전에 선언해야한다 이를 명시적 타입 선언(explicit type declaration)이라 한다
- 컴파일 시간에 변수의 타입이 결정되는 언어
- c,java 등이 대표적이다
- 정적 언어는 변수에 들어갈 값의 형태에 따라 자료형을 지정해주어야한다
- 컴파일 시에 자료형에 맞지 않는 값이 들어있을 경우 컴파일 에러가 발생
- 컴파일 시간에 변수의 타입을 체크하고 타입에러로 인한 문제점을 초기에 발견할 수 있어서 안정성이 올라간다
동적 타입(dynamic/weak type)의 언어와 변수
동적 타입 언어는 변수에 어떤 데이터 타입의 값이라도 자유롭게 할당할 수 있다.
- 런타임 시에 값에 의해 변수의 데이터 타입이 결정되는 언어
- 즉 소스가 빌드될 때 자료형을 결정하는것이 아니라 실행시에 결정이 된다
- javascript가 대표적이다
- 매번 타입을 써줄 필요가 없기 때문에 유연하고 편하다
- 실행도중 예상치 못한 타입이 들어와 사용자가 직접 에러를 확인하는 큰 문제가 발생
🤦♀️유연성 (flexibility)은 높지만 신뢰성(reliability) 는 떨어게되는 것이다
결론
프론트엔드 개발자가 목표인 나로써는 동적 타입의 언어인 자바스크립트가 주 언어가 될 것이기 때문에 아래와 같이 변수를 사용 할 때 주의 사항을 지켜가며 코드를 작성하도록 하자
1)변수를 억제하는 것이 좋다 (재할당 문제로 타입을 잘못 예측하여 오류를 불러오기 때문 확률적으로 변수가 많다면 오류 발생확률도 높기 때문)
2) 재할당을 하지 않는 것이 좋다 (계속적으로 바뀌게 되면 추적이 어렵기 때문입니다)
3) 상수를 쓰는것이 좋다 (재할당하지 않아야하기 때문)
4) 전역 변수를 최대한 사용하지 않는다 어디서든 참조하고 변경 가능한 변수는 값이 변경될 가능성이 높아서 다른 코드에 영향을 준다
👉동적 타입의 언어의 특성을 고려하여 4가지 정도 고려하여 코드를 작성한다면 가독성이 올라갈 것이다.
Reference
자바스크립트의 자료형-(MDN)
데이터 타입과 변수