Develope/Javascript

[Javascript]원시타입(Primitive Type)

oper0116 2020. 5. 25. 20:00
반응형

개요

자바스크립트(Javascript)는 6가지의 원시타입(Primitive Type)을 가지고 있습니다.
String, number, boolean, undefined, null, Symbol가 있습니다.
자바스크립트는 느슨한 타입 (loosely typed) 언어, 혹은 동적 (dynamic) 언어로써 변수 선언시 원시타입을 선언하지 않아도 되기에, 여러 타입의 값을 부여할 수 있습니다.
그러나 이러한 자바스크립트의 특성은 프로젝트를 진행함에 있어 예상치 못한 문제점을 발생시킬 수 있습니다.
따라서 각 형의 특징에 대해 이해를 하고 있어야 문제점을 해결 또는 예방할 수 있습니다.

const a = '1';
const b = 1;
a + b; // "11"

원시타입

String

String은 문자열의 집합입니다. String의 length는 0부터 최대(2^53)-1까지 가질 수 있습니다.

const job = 'Student';
const empty = '';

number

number는 -(2^53 -1) 와 2^53 -1의 사이의 값을 가질 수 있습니다.
Javascript에서는 정수만을 표현하기 위한 특별한 형은 없지만 소수점 뿐만 아니라, NaN, Infinity, -Infinity의 값을 가질 수 있습니다.

42 / +0 // Infinity
42 / -0 // -Infinity

또한 해당 타입은 수학연산도 가능합니다.

console.log(2 + 2); // 4
console.log(4 - 2); // 2
console.log(2 * 2); // 4
console.log(2 / 2); // 1
console.log(2 % 2); // 0

그러나 number형과 String형 덧셈을 시도한다면 다음과 같은 결과가 표시됩니다.

const number = 1;
console.log(number + '1'); // 11

boolean

booleantrue 또는 false를 가질 수 있습니다.

const eqaul = 5 === 5;  // true
const notEqual = 5 !== 5; // false

undefined

undefined는 변수를 선언할 때 값을 할당하지 않을 경우 자동으로 할당됩니다.

const values;
console.log(values); // undefined

function sayHi(name) {
    console.log(`Hi ${name}!`);
}

sayHi(); // Hi undefined!

null

null은 명시적으로 어떠한 값이 비어있음을 표현하기 위하여 사용됩니다.

function constructName(firstName, middleName, lastName) {
  let name = '';
  name = `${firstName}`;

  if (middleName) {
    name = `${name} ${middleName}`;
  }

  name = `${name} ${lastName}`;

  return name;
}

const fullName = constructName('Preston', null, 'Lamb');
console.log(fullName); // Preston Lamb

Symbol

Symbol은 ES6에서 추가되었습니다. Symbol은 유일한 값을 가진다.

const s1 = Symbol('sym');
const s2 = Symbol('sym');

console.log(s1 === s2); // false

참고자료

(MDN Web Docs: 자바스크립트의 자료형)[https://developer.mozilla.org/ko/docs/Web/JavaScript/Data_structures]

반응형