[JavaScript] 2. 데이터 타입

Hyeonsik Bae·2022년 6월 7일
0

JavaScript

목록 보기
2/11
post-thumbnail

데이터 타입

JavaScript에는 6개의 primitive type과 1개의 object type으로 총 7개의 data type을 가지고 있습니다.

숫자 1과 문자 '1'을 출력하면 그 결과에는 차이가 없다고 느껴질 수 있습니다.

하지만 아래와 같은 차이점들이 있습니다.

  • 할당할 메모리의 크기
  • 메모리에 저장될 때의 binary 값
  • 해당 식별자를 참조했을 때 읽어들일 메모리의 크기
  • 해당 식별자를 참조했을 때 2진수의 값을 해석한 결과
  • 연산 결과
  • ...

코드를 작성함에 있어 이런 타입을 명확히 알고 의도대로 활용할 필요가 있습니다.


Primitive type

1. number

JavaScript는 정수, 실수, 양수, 음수 등을 가리지 않고 하나의 number 타입으로 사용합니다.

number 타입은 64비트 부동소수점 형식을 따르기 때문에 사실 모든 값이 10진수 실수로 해석됩니다.

code>

var bin = 0b1010;
var oct = 0o012;
var hex = 0x0a;
var num = 10;

console.log(bin);
console.log(oct);
console.log(hex);
console.log(num);

result>

10
10
10
10

또한 number 타입은 아래와 같은 값도 표현이 가능합니다.

  • Infinity : 양의 무한대
  • -Infinity : 음의 무한대
  • NaN : 산술 연산 불가

code>

var postiveInf = 1 / 0;
var negativeInf = -1 / 0;
var nan = 1 * "a";

console.log(postiveInf);
console.log(negativeInf);
console.log(nan);

result>

Infinity
-Infinity
NaN

2. string

문자열 데이터를 나타내기 위한 타입입니다.

큰 따옴표, 작은 따옴표, 백틱으로 감싼 텍스트를 string 타입으로 인식합니다.

큰 따옴표 내부의 작은 따옴표나, 작은 따옴표 내부의 큰 따옴표도 문자열로 인식합니다.

일반적으로 작은 따옴표를 사용해서 string 타입을 나타냅니다.

code>

var str1 = "this ";
var str2 = 'is ';
var str3 = `string type`;
console.log(str1 + str2 + str3);

var text = 'this is "string" type';
console.log(text);

result>

this is string type
this is "string" type

ECMAScript6부터는 template literal이라는 개념도 추가되었습니다.

백틱을 통해 멀티라인, 표현식 삽입 등의 기능을 적용할 수 있습니다.

  • 멀티라인 : 이스케이프 시퀀스를 사용하지 않고도 개행 적용
  • 표현식 삽입 : ${}로 표현식을 감싸서 사용

code>

var name = 'nick';
var text = `Hi,
I'm ${name}`;

console.log(text);

result>

Hi,
I'm nick

3. boolean

논리적 참, 거짓을 나타내기 위한 타입입니다.

code>

var isWeb = true;
console.log(isWeb);
isWeb = false;
console.log(isWeb);

result>

true
false

4. undefined

undefined 타입을 undefined 라는 값만 가지는 타입입니다.

변수에 관련된 포스트에서 언급했듯 변수 선언 시 초기화하기 위한 값입니다.

code>

var sample;
console.log(sample);

result>

undefined

5. null

null 타입도 null 이라는 값만 가지는 타입입니다.

위에서 언급한 undefined는 값이 할당되지 않은 변수를 참조할 때 읽게 되는 값인 것에 비해

null은 의도적으로 참조를 제거할 때 사용합니다.

code>

var sample = null;
console.log(sample);

result>

null

6. Symbol

Symbol은 변경 불가능하고 다른 값과 중복되지 않는 값을 가지는 타입입니다.

이름의 충돌을 방지하기 위해 객체의 유일한 프로퍼티 키를 만들기 위해 사용됩니다.

ES6에서 추가되었으며, Symbol() 함수 호출을 통해 생성합니다.


Object type

JavaScript는 객체 기반의 언어이며, 거의 모든 것이 객체로 이루어져 있습니다.

위에서 언급했던 Primitive type을 제외하고 모든 타입은 Object type입니다.



Dynamic typing

기존에 C, C++ 등을 통해 변수를 선언 시, 변수의 타입을 지정해 주었습니다.

하지만 JavaScript는 변수 선언 시 타입을 지정하지 않습니다.

변수에는 모든 타입의 값이 할당될 수 있고, 할당되는 값의 타입에 따라 동적으로 변수의 타입이 결정됩니다.

이는 기존 변수에 다른 타입의 값이 재할당되면 변수의 타입도 바뀐다는 점을 의미합니다.

code>

var sample = 1;
console.log(typeof(sample));

sample = "str";
console.log(typeof(sample));

sample = true;
console.log(typeof(sample));

sample = null;
console.log(typeof(sample));

sample = Symbol();
console.log(typeof(sample));

result>

number
string
boolean
object
symbol
profile
현식 :)

0개의 댓글