Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

동그란 도그린

[모던 자바스크립트 Deep Dive🦎] 6장 : 데이터 타입 본문

FrontEnd/Javascript

[모던 자바스크립트 Deep Dive🦎] 6장 : 데이터 타입

도그rin 2023. 3. 24. 20:03
원시 타입 객체 타입
  • 숫자 타입
  • 문자열 타입
  • 불리언 타입
  • undefined 타입
  • null 타입
  • 심벌 타입

 

📍 숫자 타입

  • 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식 (모든 수를 실수로 처리)
  • 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입 제공 X ⇒ 값 참조하면 모두 10진수로 해석됨
  • 아래의 3가지 값 표현 가능
    • Infinity : 양의 무한대
    • -Infinity : 음의 무한대
    • NaN : 산술 연산 불가(not-a-number)
  • 자바스크립트는 대소문자 구별 ⇒ NAN, Nan, nan을 값이 아닌 식별자로 해석

 

📍 문자열 타입

  • 자바스크립트에서 가장 일반적인 문자열 표기법은 ‘작은 따옴표’ 사용하는 것
  • 문자열을 따옴표로 감싸는 이유는 키워드나 식별자 같은 토큰과 구별하기 위함

 

📍 템플릿 리터럴

  • ES6부터 도입된 문자열 표기법
  • 템플릿 리터럴은 런타임에 일반 문자열로 변환되어 처리됨
  • 백틱( ` ` )을 이용해 표현
  • 일반 문자열에서는 줄바꿈(개행)이 허용되지 않아 이스케이프 시퀀스를 이용해야 하지만, 템플릿 리터럴 내에서는 이스케이프 시퀀스 없이 줄바꿈이 허용되고 모든 공백도 그대로 적용
    • 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작
  • 표현식 삽입( ${ } )은 반드시 템플릿 리터럴 내에서 사용해야 함

 

📍 undefined 타입

  • 개발자가 의도적으로 할당하기 위한 값이 아니라 자바스크립트 엔진이 변수를 초기화할 때 사용하는 값

 

📍 null 타입

  • 자바스크립트는 대소문자를 구별하므로 null은 Null, NULL 등과 다름
  • 변수에 null을 할당하는 것은 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거하는 것을 의미, 자바스크립트 엔진은 아무도 참조하지 않는 메모리 공간에 대해 가비지 콜렉션 수행
  • 함수가 유효한 값을 반환할 수 없는 경우 null을 반환하기도 함

 

📍 심벌 타입

  • 심벌 값은 다른 값과 중복되지 않는 유일한 값객체의 유일한 프로퍼티 키를 만들기 위해 사용
  • 생성된 심벌 값은 외부에 노출되지 않음

 

📍 객체 타입

  • 자바스크립트는 객체 기반의 언어

 

📍 데이터 타입의 필요성

  • 자바스크립트 엔진은 데이터 타입에 따라 정해진 크기의 메모리 공간을 확보함 (ECMAScript 사양은 문자열과 숫자 타입 외의 데이터 타입의 크기를 명시적으로 규정하지 않음⇒자바스크립트 엔진 제조사의 구현에 따라 다를 수 있음)
  • 모든 값은 메모리에 2진수(비트의 나열)로 저장

 

  • 데이터 타입이 필요한 이유 3가지
    • 값을 저장할 때 확보할 메모리 크기를 결정하기 위함
    • 값을 참조할 때 한 번에 읽어야 할 메모리 크기를 결정하기 위함
    • 메모리에서 읽은 2진수를 어떻게 해석할지 결정하기 위함 (데이터 타입에 따라 해석 결과가 다르므로)

 

📍 동적 타이핑

  • 정적 타입 언어는 컴파일 시점에 타입 체크(선언한 데이터 타입에 맞는 값을 할당했는지 검사)를 수행, 타입 체크 통과 못하면 에러 발생하고 프로그램 실행을 막음
  • 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론)
  • 자바스크립트는 재할당에 의해 변수의 타입이 언제든 변화 가능 (동적 타이핑)
  • 변수는 타입을 갖지 않으며, 현재 변수에 할당된 ‘값’에 의해 변수의 타입이 동적으로 결정

 

  • 단점
    • 복잡한 프로그램에서는 변화하는 변수의 값을 추적하기 어려움
    • 값을 확인하기 전에는 타입을 확신할 수 없음
    • 개발자의 의도와 관계없이 자바스크립트 엔진에 의해 타입이 자동으로 변환되기도 함
    유연성은 높지만, 신뢰성은 낮음
Comments