[JavaScript] 자료형

숫자형

숫자형은 정수와 부동소수점 숫자를 모두 포함합니다. Number 타입 하나로 정수와 실수를 모두 표현합니다.

let a = 1; // 정수
let b = 3.14; // 부동소수점

특수 숫자

  • Infinity : 양의 무한대
  • -Infinity : 음의 무한대
  • NaN(Not a Number) : 산술 연산이 실패할 경우
    • NaN은 자기 자신과도 같지 않은 유일한 값(NaN !== NaN)
    • NaN 여부를 확인할 경우 Number.isNaN() 함수를 사용하여 확인

BigInt

일반적인 숫자형은 범위가 있기 때문에 이 범위를 넘어서는 정수를 표현하기 위한 자료형입니다.

숫자 리터널 뒤에 n을 붙여 BigInt를 생성합니다.

BigInt는 BigInt 끼리만 연산이 가능합니다.

const bigNum = 123n;

문자열

문자열을 만들기 위해서는 3가지 방법으로 표기할 수 있습니다.

  • 큰 따옴표 : "hello"
  • 작은 따옴표 : 'hello'
  • 역 따옴표(백틱) : `hello`

템플릿 리터럴

백틱을 사용한 템플릿 리터럴은 문자열 내에 표현식이나 변수를 ${...} 문법으로 삽입할 수 있습니다.

let a = 1;
let b = 2;
console.log(`sum : ${a + b}`)

불린형

논리적 참과 거짓을 나타냅니다.

다른 자료형을 불린형으로 변환할 때에는 Boolean() 함수를 사용합니다.

Boolean(1) // true
Boolean(0) // false

null

존재하지 않거나 빈 값을 의도적 나타낼 때 사용합니다.

undefined

값이 할당되지 않음을 나타냅니다.

  • 변수를 선언 후 초기화하지 않을 경우
  • 함수가 명시적 값을 반환하지 않은 경우

심볼(Symbol)

고유하고 변경 불가능한 원시 값으로, 주로 객체의 키로 사용됩니다.

description 프로퍼티를 사용하여 심볼을 생성할 때 전달했던 설명을 가져올 수 있습니다.

let id = Symbol('id')
console.log(id.description) // id 출력

객체

객체는 키 - 값 쌍의 속성을 저장하여 복잡한 데이터를 표현합니다.

const user = {
	name : 'lee',
	age: 14
}

속성에 접근할 때는 점 표기법이나 대괄호 표기법을 사용합니다.

user.name // 점 표기법
user['age'] // 대괄호 표기법

함수

변수에 할당하거나 다른 함수에 인수로 전달할 수 있습니다.

function greet(name) {
	return `Hello, ${name}`;
}

const sayHello = greet
console.log(sayHello('lee')) // Hello, lee 출력

typeof 연산자

피연산자의 자료형을 문자열로 반환합니다.

console.log(typeof 123);             // 출력: number
console.log(typeof 'text');          // 출력: string
console.log(typeof true);            // 출력: boolean
console.log(typeof undefined);       // 출력: undefined
console.log(typeof null);            // 출력: object (자바스크립트의 역사적인 오류)
console.log(typeof Symbol());        // 출력: symbol
console.log(typeof { key: 'value' }); // 출력: object
console.log(typeof function() {});    // 출력: function

typeof null은 object로 반환하지만 실제 객체는 아닙니다.

타입 변환

String(), Number(), Boolean()을 이용하여 명시적 변환하는 것이 좋습니다.

정확한 자료형 비교

느슨한 비교(==)는 타입 변환을 수행하므로 엄격한 비교(===)를 이용한 정확한 비교를 하는 것이 좋습니다.

console.log(0 == '0');   // 출력: true
console.log(0 === '0');  // 출력: false