[javascript] 자료형

skdus·2022년 4월 11일
1

JavaScript

목록 보기
2/17
post-thumbnail

자바스크립트에는 여덟 가지 기본 자료형이 있다. 자바스크립트의 변수는 자료형에 관계없이 모든 데이터일 수 있는데, 예를 들어 let massege="hi"로 선언을 하고, massege=9999로 바꿔도 에러가 나지 않는다.
이처럼 자료의 타입은 있지만 변수에 저장되는 값의 타입은 언제든지 바꿀 수 있는 언어를 ‘동적 타입(dynamically typed)’ 언어라고 부른다.

💡 숫자형

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

let n = 123;
n = 12.345;

숫자형엔 일반적인 숫자 외에 Infinity, -Infinity, NaN같은 '특수 숫자 값(special numeric value)'이 포함된다.

  • Infinity
    Infinity는 어떤 숫자보다 더 큰 특수 값, 무한대(∞)를 나타내며, 어느 숫자든 0으로 나누면 무한대를 얻을 수 있다.
alert( 1 / 0 );
alert( Infinity ); // 직접 참조도 가능
  • NaN
    NaN은 계산 중에 에러가 발생했다는 것을 나타내주는 값이다. 부정확하거나 정의되지 않은 수학 연산을 사용하면 계산 중에 에러가 발생하는데, 이때 NaN이 반환된다. 추가 연산을 해도 결국 NaN이 반환!
alert( "문자" / 2 ); //NaN
alert( "문자" / 5 + 7 ); //NaN

💡 BigInt

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

const bigInt = 1234567890123456789012345678901234567890n;

💡 문자형

자바스크립트에서는 문자열(string)을 따옴표로 묶는다.
따옴표에는 3가지 종류가 있는데, 큰따옴표(" "), 작은따옴표(' '), 백틱(backtick)이라고도 불리는 역 따옴표(``)가 있다.

큰따옴표와 작은따옴표는 기본적인 따옴표로, 자바스크립트에서는 이 둘에 차이를 두지 않는다.

역 따옴표로 변수나 표현식을 감싼 후 ${…}안에 넣어주면, 아래와 같이 원하는 변수나 표현식을 문자열 중간에 넣을 수 있다.

let name = "Yeon";

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

// 표현식을 문자열 중간에 삽입
alert( `the result is ${1 + 2}` ); // the result is 3

🚫 글자형은 없다.
C언어와 Java에서는 char를 통해 글자 하나를 저장할 때 쓰는 글자(character)형을 따로 지원한다. BUT 자바스크립트는 문자형만을 지원하며, 여기엔 글자가 하나 혹은 여러개 들어간다.


💡 불린형

불린형(논리 타입)은 true와 false 두 가지 값밖에 없는 자료형으로, 비교 결과를 저장할 때도 사용된다.

let nameFieldChecked = true; 

let isGreater = 4 > 1;
alert( isGreater ); // true

💡 null

null 값은 지금까지 소개한 자료형 중 어느 자료형에도 속하지 않는 값으로, 오로지 null 값만 포함하는 별도의 자료형을 만든다.

let name = null;

자바스크립트의 null은 자바스크립트 이외 언어의 null과 성격이 다르다. 다른 언어에선 null을 '존재하지 않는 객체에 대한 참조’나 '널 포인터(null pointer)'를 나타낼 때 사용한다.

하지만 자바스크립트에선 null을 ‘존재하지 않는(nothing)’ 값, ‘비어 있는(empty)’ 값, ‘알 수 없는(unknown)’ 값을 나타내는 데 사용한다.

let name = null;은 이름(name)을 알 수 없거나 그 값이 비어있음을 보여준다.


💡 undefind

undefined는 '값이 할당되지 않은 상태’를 나타낼 때 사용한다.
변수는 선언했지만, 값을 할당하지 않았다면 해당 변수에 undefined가 자동으로 할당된다.

let name;

alert(name); // undefined

undefined는 직접 할당도 가능하지만, 변수가 ‘비어있거나’ ‘알 수 없는’ 상태라는 걸 나타내려면 null을 사용하는 것이 좋다. undefined는 값이 할당되지 않은 변수의 초기값을 위해 예약어로 두자!!


💡 객체형과 심볼형

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

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


💡 typeof 연산자

typeof 연산자는 인수의 자료형을 반환한다. 자료형에 따라 처리 방식을 다르게 하고 싶거나 변수의 자료형을 빠르게 알아내고자 할 때 유용!

typeof 연산자는 두 가지 형태의 문법을 지원

  • 연산자: typeof x
  • 함수: typeof(x)
    괄호가 있든 없든 결과가 동일하다.
typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"

typeof null // "object" (?)

typeof null의 결과는 "object"이다. null은 별도의 고유한 자료형을 가지는 특수 값으로 객체가 아니지만, 하위 호환성을 유지하기 위해 이런 오류를 수정하지 않고 남겨둔 상황이라고 한다.


참고자료

0개의 댓글