데이터 타입

렐루·2023년 4월 5일
0

데이터타입

값의 종류. 자바스크립트의 모든 값은 데이터 타입을 갖는다.

원시

숫자
자바스크립트는 하나의 숫자타입만 존재
배정밀도 64비트 부동소수점 형식을 따른다. 모든 수를 실수로 처리, 정수 표현 타입 존재X
자바스크립트는 별도 진수 타입 제공이 없기 때문에 숫자 값을 참조하면 모두 10진수로 해석한다.
정수타입이 없기 때문에 정수 나눔 연산을 해도 실수가 나올 수 있다.
(Infinity, -Infinity, NaN)

문자열
문자열을 따옴표로 감싸는 이유는 키워드나 식별자 같은 토큰과 구분하기 위해서다.
만약 문자열을 따옴표로 감싸지 않으면 자바스크립트 엔진은 키워드나 식별자 같은 토큰으로 인식한다.
이스케이프 시퀀스

undefined
null

심벌
다른 값과 중복되지 않는 유일무이한 값. 따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 위해 사용한다.
심벌 이외의 원시 값은 리터럴을 통해 생성하지만 심벌은 Symbol 함수를 호출해 생성한다. 이때 생성된 심벌 값은 외부에 노출되지 않으며, 다른 값과 절대 중복되지 않는 유일무이한 값이다.

객체

객체, 함수, 배열 등
자바스크립트의 데이터 타입은 크게 원시 타입과 객체 타입으로 분류
근본적으로 다르기 때문이다.
자바스크립트는 객체 기반의 언어, 자바스크립트를 이루고 있는 거의 모든 것이 객체.

데이터 타입의 필요성

  • 데이터 타입에 의한 메모리 공간의 확보와 참조
    : 값은 메모리에 저장하고 참조할 수 있어야 한다. 메모리에 값을 저장하려면 먼저 확보해야 할 메모리 공간의 크기를 결정해야 한다. 자바스크립트 엔진은 데이터 타입, 즉 값의 종류에 따라 정해진 크기의 메모리 공간을 확보한다. 즉 변수에 할당되는 값의 데이터 타입에 따라 확보해야 할 메모리 공간의 크기가 결정된다. 예를 들면 자바스크립트 엔진은 리터럴 100을 숫자 타입의 값으로 해석하고 숫자 타입 값 100을 저장하기 위해 8바이트의 메모리 공간을 확보한다. 그리고 100을 2진수로 저장한다.
    컴퓨터는 한 번에 읽어 들어야 할 메모리 셀의 크기를 어떻게 알 수 있을까? 변수에는 숫자 타입의 값이 할당되어 있으므로 자바스크립트 엔진은 score 변수를 숫자 타입으로 인식한다. 컴파일러 또는 인터프리터는 **_심벌 테이블_**이라고 부르는 자료 구조를 통해 식별자를 바로 키로 바인딩된 값의 메모리 주소, 데이터 타입, 스포트 등을 관리한다.
  • 값을 저장할 때 확보해야 하는 매모리 공간의 크기를 결정하기 위해
  • 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
  • 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해

동적 타이핑

자바스크립트의 변수에 어떤 데이터 값이라도 자유롭게 할당 가능
정적 타입 언어는 변수 선언 시점에 변수의 타입이 결정되고 변수의 타입을 변경할 수 없다.
값을 할당하는 시점에 변수의 타입이 동적으로 결정되고 변수의 타입을 언제든지 자유롭게 변경할 수 있다.
변수의 선언이 아닌 할당에 의해 타입이 결정된다. 언제든지 변수 타입은 동적으로 변할 수 있다.
현재 변수에 할당되어 있는 값에 의해 변수의 타입이 동적으로 결정된다.
1. 변수의 개수는 필요한 만큼 최소한으로 유지
2. 변수의 유효 범위는 최대한 좁게
3. 전역 변수는 최대한 자제
4. 변수보다는 상수를 사용하기
5. 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍

코드의 존재 목적 : 단순히 동작 아님. 개발자를 위한 문서 => 가독성이 좋아야 함.

profile
프론트 공부중입니다!

0개의 댓글