[Javascript] 자료형

2021. 4. 8. 21:08JavaScript/JS

 


  Javascript에서 값은 항상 문자열이나 숫자영 같은 특정한 자료형에 속한다.

 

  Javascript의 변수는 자료형에 관계 없이 모든 데이터일 수 있는데, 따라서 아래와 같이 특정 변수는 어떤 순간에는 문자열일 수 있고 또 다른 순간엔 숫자가 될 수도 있는 것이다.

 

// no error
let message = "hello";
message = 123456;


  위처럼 타입은 있지만 변수에 저장되는 값의 타입은 언제든지 바뀔 수 있으므로 Javascript를 동적 타입 언어라고 한다. 그러므로 변수의 타입을 미리 선언할 필요가 없고, 프로그램이 처리되는 과정에서 자동으로 파악되며 결국 같은 변수임에도 상황에 따라 값의 타입이 바뀔 수 있는 것이다.

 


1. 숫자형_Number type

 

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

 

  데이터 타입에 엄격한 프로그래밍 언어들은 소수형과 정수형을 다른 타입으로 구별하지만 Javascript의 경우 숫자가 올 수 있는 값들은 모두 Number type에 속한다.

 

  숫자 형식 외에도 숫자가 아닌 값을 표현하는 NaN과 각각 양의 무한대와 음의 무한대를 표현하는 Infinity, -Infinity도 Number type에 해당한다.

 

 

※ Javascript에서의 수학 연산

  Javascript에서 행해지는 수학 연산은 안전하다고 볼 수 있다. 0으로 나눈다거나 숫자가 아닌 문자열을 숫자로 취급하는 드으이 이례적인 연산이 Javascript에서는 가능하다. 이와 같이 말이 안 되는 수학 연산을 하더라도 NaN을 반환하며 연산이 종료될 뿐, 치명적인 에러를 내거나 어플리케이션이 죽지 않는다.

 

 


 

2. BigInt

 

  Javascript에서는 (2^53 - 1)(9007199254740991) 보다 큰 값 혹은 -(2^53 - 1) 보다 작은 정수는 숫자형을 사용해 나타낼 수 없다. 대부분의 상황에서는 이러한 제약 사항이 문제가 되지 않지만, 암호 관련 작업 등 아주 큰 숫자가 필요한 경우나 아주 높은 정밀도로 작업을 해야 하는 경우 큰 숫자가 필요할 수 있다.

 

  BigInt형은 표준으로 채택된 지 얼마 안 된 자료형으로, 길이에 상관 없이 정수를 나타낼 수 있다.

 

  BigInt형 값은 정수 리터럴 끝에 n을 붙여 만든다.

 

// 끝에 'n'을 붙여 BigInt 자료형을 만듦
const bigInt = 1234567890123456789012345678901234567890n;


※ 호환성 이슈
  Firefox, Chrome, Edge에서만 BigInt를 지원하며 Safari, IE에선 지원하지 않는다.

 

 


 

 

3. 문자형

 

문자형 자료형은 따옴표로 묶어 사용한다.

let string = "Hi";

let string2 = 'Bye';

let phrase = `${string}, John`;


  따옴표에는 세 가지 종류가 있다.

 

1) 큰 따옴표: "Hello"

2) 작은따옴표: 'Hello'

3) 역 따옴표(백틱, backtick): `Hello`

 

  큰 따옴표와 작은 따옴표는 기본적인 따옴표로 Javascript에서는 이 둘에 차이를 두지 않는다.

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

 

 

let name = "John";

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

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

 

  ${...} 안에는 변수나 수학 표현식 등을 넣을 수 있다. 이렇게 문자열 중간에 들어간 변수나 표현식은 평가가 끝난 후 문자열의 일부가 된다.

 

  큰 따옴표나 작은 따옴표를 사용하면 중간에 표현식을 넣을 수 없다는 점에 주의하자. 이 방법은 역 따옴표를 써야만 가능하다.

 

 



4. Boolean형

 

  Boolean형은 논리적인 요소를 나타내는 데이터 형식으로, true와 false 두 가지 값을 가질 수 있는 자료형이다.


  긍정이나 부정을 나타내는 값을 저장할 때 사용하며 true는 긍정, false는 부정을 의미한다.

 

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

let isGreater = 4 > 1;

alert( isGreater ); // true




 

5. null


  null 값만을 위한 독립 자료형이다. null은 빈 값, 알 수 없는 값을 표현하는 값에 해당한다.

 

let age = null;


  Javascript의 null은 Javascript 외 언어의 null과 성격이 다르다. 다른 언어에서는 null을 존재하지 않는 객체에 대한 참조나 널 포인터(null pointer)를 나타낼 때 사용한다. Javascript의 경우 null을 존재하지 않는(nothing) 값, 비어 있는(empty) 값, 알 수 없는(unknown) 값을 나타내는 데 사용한다.

 

 

 




6. undefined
  undefined 값도 null 값처럼 자신만의 자료형을 형성한다. 


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

let age;

alert(age); // 'undefined'


  변수에 undefined를 명시적으로 할당하는 것도 가능하긴 하다.

let age = 100;

// 값을 undefined로 변경.
age = undefined;

alert(age); // "undefined"

 

  하지만 이렇게 직접 undefined를 할당하는 걸 권장하진 않는다. 변수가 비어있거나 알 수 없는 상태라는 걸 나타내려면 null을 사용하도록 하자. undefined는 값이 할당되지 않은 변수의 초기값을 위해 예약어로 남겨두는 것을 권장한다.

 


 

 

7. Symbol

  심볼(symbol)형은 객체의 고유한 식별자(unique identifier)를 만들 때 사용되며 주로 객체의 key 값으로 활용된다.


  다만 IE에서 지원되지 않는 문제와 더불어 나중에 필요에 의해 추가된 자료형인 만큼 흔하게 사용되지는 않는 형식이다.

 

 



8. 객체

 

  객체(object)형은 특수한 자료형이다.

 

  객체형을 제외한 다른 자료형은 문자열이든 숫자든 한 가지만 표현할 수 있기 때문에 원시(primitive) 자료형이라 부른다. 

 

  반면 객체의 경우 데이터 컬렉션이나 복잡한 개체(entity)를 표현할 수 있다. 이런 특징 때문에 Javascript에서 객체는 좀 더 특별한 취급을 받는다.

 

  배열, 함수, 클래스 모두 이 객체에 해당된다. 객체는 내부에서 다양한  Key : Value 의 쌍을 가지고 복잡한 데이터 구조를 형성할 수 있게 하는데, key 에는 String과 Symbol 타입의 값이 들어가고, Value 에는 모든 데이터 타입의 값이 들어갈 수 있다.



 

 

참고자료

ko.javascript.info/types

bigtop.tistory.com/11?category=800038

 

 

 

 

 

 

'JavaScript > JS' 카테고리의 다른 글

[Javascript] 형변환(1) - 명시적 형변환  (0) 2021.04.09
[Javascript] use strict  (0) 2021.04.08
[Javascript] Singleton Pattern(싱글톤 패턴)  (0) 2020.10.13
[Javascript] Reduce  (0) 2020.10.13
[Javascript] Static Method  (0) 2020.09.23