[모던 자바스크립트 튜토리얼] 2.5 자료형

개발견 배도르만·2023년 2월 20일
0
post-thumbnail

🎈 자료형(Data Type)

자바스크립트에서 특정 값은 항상 특정 자료형에 속한다.

여덟 가지 기본 자료형이 있다.

변수는 자료형에 관계없이 모든 데이터일 수 있다. 즉 자료형이 바뀔 수 있다.

이처럼 변수의 자료형이 언제든지 바뀔 수 있는 언어를 동적 타입(Dynamically Typed)언어라고 한다.

다음은 여덟 가지 자료형이다.

각 자료형의 보다 세세한 설명은 차후 챕터에서 다룬다.

1. 숫자(Number)형

let n = 123;
n = 12.3;

숫자형(number type)은 정수 및 부동소수점 숫자(floating point number)를 나타낸다.

  • 일반적으로 생각하는 숫자처럼 연산자를 사용하여 연산할 수 있다.

  • 일반적인 숫자 외에 Infinity, -Infinity, NaN과 같은 특수 숫자 값(Special Numeric Value) 또한 숫자형에 속한다.
    • Infinity는 무한대를 나타낸다.
    • NaN(Not a Number)은 잘못된 연산으로 나타나는 값이다. NaN은 그 자체로 숫자가 아니라는 의미이기 때문에 NaN에 다른 연산을 수행해도 NaN이다.
      (잘못된 연산이 실행되어도 에러로 인해 프로그램이 멈추지 않으며 단지 NaN을 반환할 뿐이다.)

2. BigInt

내부 표현 방식(?) 때문에 자바스크립트에서는 (2의 53제곱 - 1)(9007199254740991)보다 큰 값 혹은 -(2의 53제곱 - 1)보다 작은 정수는 '숫자형'을 사용해 나타낼 수 없다.

대부분의 상황에서는 이런 큰 숫자를 사용할 일이 없어 문제가 되지 않는다. 하지만 암호 관련 작업 등 큰 숫자 혹은 높은 정밀도가 요구되는 상황이라면 BigInt형으로 처리한다.

BigInt형은 길이에 상관없이 정수를 나타낼 수 있는 자료형이며 정수 리터럴 끝에 n을 붙이면 만들 수 있다.. 표준으로 채택된지 얼마 되지 않았다.

let bi = 1234567890123456789012345678901234567890n;

3. 문자(String)형

String이라고 하면 문자열이다. '열'은 집합을 의미한다. 특정 언어에서는 글자형(char, character)을 사용하여 이와 대조되는 단수의 글자를 특정한다. 하지만 자바스크립트에 글자형은 없다.
자바스크립트에선 문자열(String)을 따옴표로 묶는다.

let str = "Hello";
let str2 = 'Single quotes are ok too';
let phrase = `can embed another ${str}`;

따옴표는 세 종류가 있다.
기본은 큰따옴표와 작은따옴표이며, 자바스크립트에서는 둘의 차이를 두지 않는다(하지만 큰따옴표는 큰따옴표로, 작은따옴표는 작은따옴표로 닫아야 한다).

  • 큰따옴표
let str = "Hello";
  • 작은따옴표
let str2 = 'Single quotes are ok too';
  • 역따옴표는 변수나 표현식을 사용하는 문자열을 처리할 때 주로 사용한다. ${...}안에 변수나 표현식을 넣으면, 문자열 중간에도 간단하게 변수나 표현식을 사용할 수 있다. 이 때 사용된 변수나 표현식은 따옴표 내에 존재하므로 평가가 끝난 후 문자열이 된다.
//역 따옴표(백틱, backtick)
let phrase = `can embed another ${str}`;

4. 불린(boolean)형

불린형(논리 타입)은 true와 false 두 가지 값 밖에 없는 자료형이다.
true는 긍정, 참을 나타내고 false는 부정, 거짓을 나타낸다.

alert(1 + 1 = 2) // alert창에 true가 표시됨
alert(3 + 3 = 10) // alert창에 false가 표시됨

5. null 값

null 값은 다른 자료형에 속하지 않고 오직 null 값만 포함하는 별도의 자료형을 만든다.

자바스크립트의 null은 다른 언어의 null과 성격이 다르다. 다른 언어에선 '존재하지 않는 객체에 대한 참조' 또는 '널 포인터(null pointer)'를 나타낼 때 사용한다.
반면 자바스크립트에선 null을 '존재하지 않는(nothing)' 값, '빈(empty)' 값, '알 수 없는(unknown)' 값을 나타낸다.

let age = null; // age를 알 수 없거나 값이 비어있음을 나타낸다.

6. undefined 값

null 값과 마찬가지로 자신만의 자료형을 형성한다.
'선언된 변수에 값이 할당되지 않은 상태'를 나타낼 때 사용한다.

let age; //변수 선언O, 값 할당X
alert(age); // 'undefined' 출력
age = 20; // 변수에 값 할당
alert(age); // 20 출력

undefined 자체를 할당할 수도 있다.

age = undefined;

7. 객체와 심볼

객체(object)형은 특수한 자료형이다.
다른 자료형은 문자열이든 숫자든 한 가지만 표현할 수 있기 때문에 원시(primitive) 자료형이라 부른다. 반면 객체형은 데이터 컬렉션이나 복잡한 개체(entity)를 표현할 수 있다.

심볼(symbol)형은 객체의 고유한 식별자(unique identifier)를 만들 때 사용된다.

8. typeof 연산자

typeof 연산자는 인수의 자료형을 반환한다. 자료형을 구분하여 처리하거나 변수의 자료형을 빠르게 알아낼 때 유용하다.
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"  - Math는 수학 연산을 제공하는 내장 객체이므로 'object'가 출력됨

typeof null // "object"  - null은 '값'이며 객체가 아니다. 하지만 하위 호환성을 유지하기 위해 이런 오류를 수정하지 않고 유지하고 있다. 

typeof alert // "function"  - alert은 함수이기에 'function'을 출력하나, function이라는 자료형은 없다. 마찬가지로 하위 호환성을 유지하기 위해 남겨두었다.
profile
네 발 개발 개

0개의 댓글