Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
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
31
Tags
more
Archives
Today
Total
관리 메뉴

늘보블로그

데이터타입 본문

스터디로그/javascript

데이터타입

개발자늘보 2020. 12. 4. 03:00

자바스크립트의 데이터 타입


  • 데이터 타입: 값의 종류. 자바스크립트의 모든 값은 데이터 타입을 가짐.
    • 원시 타입: 숫자, 문자열, 불리언, undefined, null, 심벌 타입
    • 객체 타입: 객체, 함수, 배열 등

1. 숫자 타입

  • C, 자바 등과 달리 자바스크립트는 하나의 숫자 타입만 존재함.
  • 모든 수는 실수로 처리함. 정수만 표현하기 위한 타입 X
    • 정수로 표시되도 실제로는 실수임을 의미. -> 정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있음. (ex: console.log(3/2); // 1.5)
  • 2진수, 8진수, 16진수를 표현하기 위한 타입이 없으므로 모든 수는 참조 시 10진수로 해석됨
var binary = 0b01000001;
var octal = 0o101;
var hex = 0x41;

console.log(binary, octal, hex); // 65, 65, 65
console.log(binary === octal, octal === hex); // true, true
  • 추가적으로 Infinity(양의 무한대), -Infinity(음의 무한대), NaN(산술 연산 불가)라는 값을 표현할 수 있음. (ex: console.log(10/0, 10/-0, 1*'String'); // Infinity, -Infinity, NaN)

2. 문자열 타입

  • 텍스트 데이터를 나타내는 데 사용. 0개 이상의 16비트 유니코드 문자(UTF-16)의 집합
  • 작은따옴표, 큰따옴표, 백틱으로 텍스트를 감싸서 표현 가능함
    • 키워드나 식별자 같은 토큰과 구분하기 위해서 따옴표로 감싸야 함
    • 공백 문자를 사용하기 위해
  • 변경 불가능한 값immutable value
  • 템플릿 리터럴: 문자열 처리 기능의 확장을 위해 ES6부터 도입. 백틱을 사용해 표현.
    • 멀티라인 문자열: 기존에는 이스케이프 시퀀스를 사용 -> 엔터로 줄바꿈(개행) 가능
    • 표현식 삽입: 연결 연산자 +로 문자열과 표현식 연결 -> ${표현식}. 표현식의 평가 값이 문자열이 아닐 경우 타입 강제 변환됨

3. 불리언 타입

  • true(논리적 참), false(논리적 거짓)이 포함됨
  • 프로그램 흐름을 제어하는 조건문에서 주로 사용

4. undefined 타입

  • undefined가 해당됨
  • var, let 키워드로 변수 선언 시 자바스크립트 엔진이 undefined로 암묵적 초기화 진행함. -> 값의 할당 여부를 판단할 수 있음

5. null 타입

  • null이 해당됨
  • 프로그래밍 언어에서 null은 변수에 값이 없다는 것을 의도적으로 명시(의도적 부재)할 때 사용
  • null을 할당하는 것은 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미.
    • 참조가 제거된 값은 가비지 콜렉션이 수행됨
  • 함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null을 반환함(ex: document.querySelector 메서드에서 존재하지 않는 클래스명을 작성했을 때)

6. 심벌 타입

  • 다른 값과 중복되지 않는 유일한 값. 변경 불가능함.
  • 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용
  • Symbol 함수를 호출해 생성(리터럴 X)
  • 생성된 심벌 값은 외부에 노출되지 않음.

7. 객체 타입

(예정)

8. 타입의 필요성

  • 데이터 타입에 의한 메모리 공간의 확보와 참조
    • 자바스크립트 엔진은 값의 타입에 따라 정해진 크기의 메모리 공간을 확보함.
    • 참조 시 타입에 따라 한 번에 읽어야 할 메모리 공간의 크기(메모리 셀의 개수, 바이트 수)가 정해짐
  • 데이터 타입에 의한 값의 해석
    • 2진수 형태이므로 타입에 따라 해석이 달라짐

9. 동적 타이핑

  • 정적 타입 언어: C, 자바와 같이 변수에 할당할 데이터 타입을 사전에 선언해야 하는 언어. 이러한 사전 선언을 명시적 타입 선언이라고 함
    • 정적 타입 언어는 컴파일 시점에 타입 체크를 시행. 타입 체크를 통과하지 못하면 에러가 발생하고 프로그램이 실행되지 않음
  • 동적 타입 언어: 자바스크립트, 파이썬 등은 값을 할당하는 시점에 변수의 타입이 동적으로 결정됨(동적 타이핑). 재할당도 가능.
    • 타입 추론: 값의 할당에 의해 타입이 결정되는 것
  • 자바스크립트 엔진은 이 때문에 암묵적 타입 변환이 가능함. -> 유연성 높으나 신뢰성 낮음
    • 변수 사용 시 주의사항
      • 변수는 꼭 필요한 경우에만 한정적으로 사용
      • 유효 범위(스코프)는 최대한 좁게 만들어 부작용을 억제
      • 전역 변수는 가능한 배제
      • 변수보다는 상수
      • 변수 네이밍은 목적이나 의미에 맞게 할 것

'스터디로그 > javascript' 카테고리의 다른 글

제어문  (0) 2020.12.15
연산자  (0) 2020.12.04
  (0) 2020.12.03
표현식  (0) 2020.12.03
변수  (0) 2020.12.03