fffo

데이터 타입 본문

Programming/Javascript

데이터 타입

gggs 2021. 9. 21. 21:30

데이터 타입

  • 원시 타입
    • number
    • string
    • boolean
    • undefined
    • null
    • symbol : ES6에서 추가된 타입
  • 객체 타입 : 객체, 함수, 배열 등

number

  • 배정밀도 64비트 부동소수점 형식을 따름
  • 모든 수를 실수로 처리, 정수만 표현하기 위한 데이터 타입이 별도로 존재하지 않음
  • 2진수, 8진수, 16진수 리터럴은 모두 메모리에 배정밀도 64비트 부동소수점 형식의 2진수로 저장되어 값을 참조하면 모두 10진수로 해석됨

const binary = 0b1000001; const octal = 0o101; const hex = 0x41; console.log(binary); // 65 console.log(octal); // 65 console.log(hex); // 65 console.log(octal == hex); // true

  • Infinity : 양의 무한대 예약어
  • -Infinity : 음의 무한대 예약어
  • NaN : 산술 연산 불가(not a number) 식별자. 값이 아닌 식별자임에 유의

string

  • 원시 타입, 변경 불가능한 값임(C언어는 문자의 배열로 문자열 표현, java는 객체로 표현)
  • 문자열이 생성되면 그 문자열을 변경할 수 없음
  • 가장 일반적인 방법은 작은 따옴표로 감싸기

template literal

  • ES5부터 템플릿 리터럴이라는 새로운 문자열 표기법 도입
  • 멀티라인 문자열, 표현식 삽입, tagged template 등 편리한 문자열 처리 기능 제공
  • 템플릿 리터럴은 런타임에 일반 문자열로 변환되어 처리됨
  • 백틱()을 사용해 표현
  • 일반 문자열 내에서는 개행하려면 escape sequence 사용해야 하지만 백틱은 그냥 가능
  • 표현식 삽입 : ${ }
    • 표현식의 평가 결과가 문자열이 아니더라도 문자열로 강제 변환됨

const first = 'wlrma'; const last = 'dl'; console.log(`${first} ${last} is my sun`);

boolean, undefined, null, symbol

  • var로 선언한 변수는 선언이 되는 순간 암묵적으로 undefined로 초기화 됨
  • undefined는 js 엔진이 변수를 초기화 할 때 사용하는 값이기 때문에 개발자가 의도적으로 변수에 할당하는 것은 지양
  • null은 변수에 값이 없다는 것을 의도적으로 명시 할 때 사용
  • 함수가 유효한 값을 반환 할 수 없을 때 명시적으로 null을 반환하기도 함
  • symbol은 변경 불가능한 원시 타입의 값.
    • 다른 값과 중복되지 않는 유일무이한 값. 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용.
    • symbol 이외의 원시 값은 리터럴을 통해 생성하지만 심벌은 Symbol함수를 호출해 생성

데이터 타입의 필요성

  • 데이터 타입에 의한 메모리 공간의 확보와 참조
  • 데이터 타입에 의한 값의 해석

동적 타이핑

  • 선언이 아닌 할당에 의해 타입이 결정됨(타입 추론type inference)
  • 재할당으로 변수의 타입을 동적으로 변경 가능(동적 타이핑 dynamic typing)
  • 변수는 타입을 갖지 않음. 값이 타입을 가짐.
  • 유연성은 높지만 신뢰성이 떨어질 수 있음
  • 변수 사용 주의사항
    • 최소한의 변수 사용 - 재할당으로 인한 타입 예측에 어려움 방지
    • 변수 스코프 최대한 좁게
    • 전역변수 최소화
    • 변수보다 상수 사용 지향
    • 변수 이름을 적절히 명명

'Programming > Javascript' 카테고리의 다른 글

제어문  (0) 2021.09.23
연산자  (0) 2021.09.22
표현식과 문  (0) 2021.09.20
js 실행환경, 변수  (0) 2021.09.19
자바스크립트 개요  (0) 2021.09.17
Comments