개요
자바스크립트(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'); // 11boolean
boolean은 true 또는 false를 가질 수 있습니다.
const eqaul = 5 === 5; // true
const notEqual = 5 !== 5; // falseundefined
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 LambSymbol
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 |