FrontEnd/모던 자바스크립트 deep dive

Chapter 06. 데이터 타입(data type)

계란💕 2023. 10. 1. 16:46

데이터 타입

  • 자바스크립트의 모든 값은 데이터 타입을 갖는다. 
  • 원시 타입과 객체 타입으로 구분한다. 
  • 원시 타입
    • 숫자(number)
    • 문자열(string)
    • 불리언(boolean)
    • undefined: 선언되었으나 값이 할당되지 않았다. 
    • null: 변수에 값이 없다는 것을 의도적으로 명시하기 위해 사용한다. 변수가 이전에 참조하던 값을 더 이상 참조하지 않는다는 의미다.
    • 심벌(symbol) 타입: 변경 불가능한 원시 타입의 값이다., ES6에서 추가된 타입이다. 
  • 객체 타입: 객체, 함수, 배열 등

 


숫자(number) 타입

  • C, Java의 경우에는 소수점 이하가 있는 숫자(실수), 소수점 이하가 없는 숫자(정수)를 구분해서 double, float 같은 숫자타입을 제공한다. 
  •  이와 다르게 JavaScript에서는 숫자 타입이 하나만 존재한다.
  • JavaScript에서는 모든 숫자를 실수로 처리한다. 

 


문자열(string) 타입

  • 텍스트 데이터를 나타내는 데 사용한다. 
  • 0개 이상의 16비트 유니코드 문자(UTF-16)의 집합으로 전 세계 대부분의 문자를 표현 가능하다.
  • 작은따옴표('')내의 큰따옴표("")는 문자열로 인식되고 반대로 큰따옴표 내의 작은 따옴표도 문자열로 인식된다. 

 


템플릿 리터럴

  • ES6부터 템플릿 리터럴이라는 새로운 문자열 표기법이 도입되었다. 
  • 멀티 라인 문자열, 표현식 삽입, 태그드 템플ㄹ시 등 편리한 문자열 처리 기능을 제공한다. 
  • 일반 문자열과 다르게 템플릿 리터럴 내에서는 이스케이프 시퀀스를 사용하지 

 

 

이스케이스 시퀀스(escape sequence)

  • \0: NULL
  • \b: 백스페이스
  • \f: 폼 피드(Form Feed), 프린터로 출력할 경우 다음 페이지의 시작 지점을 이동한다. 
  • \n: 개행(Line Feed), 다음 행으로 이동한다. 
  • \r: 개행(Carriage Return), 커서를 처음으로 이동
  • \t: 탭(수평)
  • \v: 탭(수직)
  • \uXXXX
  • \': 작은따옴표
  • \": 큰따옴표
  • \\: 백슬래시

 


데이터 타입의 필요성

  • 데이터 값을 저장하려면 확보할 메모리 공간의 크기를 결정해야한다. 
  • 값을 참조할 때 한 번에 읽어들여야 할 메모리 공간의 크기를 결정하기 위해
  • 메모리에서 읽어들인 2진수를 어떻게 해석할지 결정하기 위해서
    • Ex)  0100 0001 는 65인데 이는 숫자 65 일 수도 있고 문자 'A'일 수도 있다. 

 


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

  • 정적 타입 언어(static/strong type): 변수를 선언할 때 변수에 할당할 수 있는 값의 종류나 타입을 선언해야한다. 
    • 컴파일 시점에 타입 체크한다. 타입의 일관성을 강제함으로써 런타임에 발생하는 에러를 줄인다. 
    • Ex) C,  Java
  • 동적 타입(dynamic/weak type) 언어: 선언이 아닌 할당에 의헤 타입이 결정된다. 
    • 동적 타이핑(dynamic typing): 재할당에 의해 변수의 타입을 항상 동적으로 변할 수 있다. 
    • Ex) JavaScript, Python, PHP, Ruby, Lisp, Perl
    • 유연성은 높지만 신뢰성은 떨어진다. 

 


변수 생성 시 주의 사항

  • 꼭 필요한 경우 제한적으로 사용
  • 변수의 유효 범위(스코프)는 최대한 좁게 만들어서 변수의 부작용을 억제한다. 넓을수록 오류 발생 확률이 높아진다. 
  • 전역 변수는 최대한 사용하지 않는다. 
  • 변수보다는 상수를 사용해서 값의 변경을 억제한다 

 


title

  • con
  • con

title

  • con
  • con

 

출처 - 「모던 자바스크립트 deep dive」 -이웅모