개요
자바스크립트(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
boolean
은 true
또는 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]
'Develope > Javascript' 카테고리의 다른 글
[Javascript]JSON.stringify(), JSON.parse() 사용법 (0) | 2020.06.04 |
---|---|
[Javascript]구조분해할당(Destructuring) (0) | 2020.05.26 |
[Javascript]비교연산자(Comparison Operators) (0) | 2020.05.24 |
[Javascript]논리연산자(Logical Operators) (0) | 2020.05.21 |
ES2020에서 제공되는 기능 (0) | 2020.05.20 |