JavaScript 2.5

2 minute read

자료형

  • 자바 스크립트에는 여덟가지 기본 자료형이 있다.
  • 자바 스크립트의 변수는 자료형에 관계없이 모든 데이터일 수 있다.
    • 따라서 변수는 어떤 순간에 문자열일 수 있고 다른 순간에는 숫자가 될 수도 있다.
    • 이처럼 자료의 타입은 있지만 변수에 저장되는 값의 타입은 언제든지 바꿀 수 있는 언어를 ‘동적 타입’ 언어라고 부른다.

숫자형

  • 숫자형은 정수 및 부동소수점 숫자를 나타낸다.
  • 숫자형엔 일반적인 숫자 외에 Infinity, -Infinity, NaN 같은 특수 숫자값이 포함된다.
    • 인피니티는 어떤 숫자보다 큰 특수 값, 무한대를 나타낸다.
      • 어떤 숫자든 0으로 나누면 무한대를 얻을 수 있다.
      • 인피니티를 직접 참조할 수도 있다.
    • NaN은 계산 중에 에러가 발생했다는 것을 알려주는 값이다.
    • 부정확하거나 정의되지 않은 수학 연산을 사용했을 때 에러가 발생하면 NaN이 반환된다.

BigInt

  • 자바 스크립트에서는 (2의 53승 -1)(9,007,199,254,740,991) 보다 큰 값 혹은 -(2의 53승 -1)보다 작은 정수는 숫자형을 사용해 나타낼 수 없다.
  • BigInt는 길이에 상관없이 정수를 나타낼 수 있다.
  • BigInt형 값은 정수 리터럴 끝에 n을 붙이면 만들 수 있다.
// 끝에 'n'이 붙으면 BigInt형 자료입니다.
const bigInt = 1234567890123456789012345678901234567890n;
  • 호환성 이슈가 있다.
    • Firefox, Chrome, Edge에서만 지원한다.

문자형

  • 자바 스크립트에선 문자열을 따옴표로 묶는다.
  • 따옴표에는 세 종류가 있다.
    • 큰 따옴표 : “Hello”
    • 작은 따옴표 : ‘Hello’
    • 역 따옴표(백틱) : Hello`
let name = "John";

// 변수를 문자열 중간에 삽입
alert( `Hello, ${name}!` ); // Hello, John!

// 표현식을 문자열 중간에 삽입
alert( `the result is ${1 + 2}` ); // the result is 3
  • 큰 따옴표나 작은 따옴표를 사용하면 중간에 표현식을 넣을 수 없다.
    • 이 방법은 역 따옴표를 써야만 가능하다.
alert( "the result is ${1 + 2}" ); // the result is ${1 + 2} (큰따옴표는 확장 기능을 지원하지 않습니다.)

불린형

  • 불린형은 true 와 false 두 가지 값밖에 없는 자료형인다.

  • 비교 결과를 저장할 때도 사용된다.

null 값

  • null 값은 오로지 null 값만 포함하는 별도의 자료형을 만든다.

  • 자바 스크립트에서는 null을 존재하지 않는 값, 비어있는 값, 알 수 없는 값을 나타내는데 사용한다.

undefined 값

  • undefined 값도 null 값처럼 자신만의 자료형을 형성한다.
  • 값이 할당되지 않은 상태를 나타낼 때 사용한다.
    • 변수는 선언했지만 값을 할당하지 않았다면 해당 변수에 undefined 가 자동으로 할당된다.
let age;

alert(age); // 'undefined'가 출력됩니다.
  • 개발자가 변수에 undefined를 할당하는 것도 가능하지만 직접 할당하는 것은 권장되지 않는다.

객체와 심볼

  • 객체형을 제외한 다른 자료형은 문자열이든 숫자든 한 가지만 표현할 수 있다.
  • 반면 객체는 데이터 컬렉션이나 복잡한 개체를 표현할 수 있다.
  • 심볼 형은 객체의 고요한 식별자를 만들 때 사용된다.

typeof 연산자

  • 인수의 자료형을 반환한다.
  • 자료형에 따라 처리 방식을 다르게 하고 싶거나 변수의 자료형을 빠르게 알아내고자 할 때 유용하다.
  • 두 가지 형태의 문법을 지원한다.
    • 연산자 : typeof x
    • 함수 : typeof(x)
      • 괄호가 있든 없든 결과는 동일하다.
typeof undefined // "undefined"

typeof 0 // "number"

typeof 10n // "bigint"

typeof true // "boolean"

typeof "foo" // "string"

typeof Symbol("id") // "symbol"

typeof Math // "object"  (1)

typeof null // "object"  (2)

typeof alert // "function"  (3)
  • Math는 수학 연산을 제공하는 내장 객체이므로 object 가 출력된다.
  • typeof null의 결과는 object이다. 언어상 오류지만 하위 호환성을 위해 수정하지 않았다.
  • typeof는 피연산자가 함수면 function을 반환한다. 형식적으로는 잘못된 방식이지만 하위 호환성을 위해 남겨졌다.