-
[JS] 원시타입 || 기본 자료형 (Primitive Type)간단정리 2020. 7. 8. 10:11
Javascript에서는
원시 타입(Primitive Type)
과참조 타입(Reference Type)
두 가지 자료형을 제공한다.자바스크립트는 느슨한 타입 언어 || 동적 언어이다.
이 말은 변수의 타입을 미리 지정할 필요가 없다는 의미이다. 타입은 프로그램이 처리되는 과정에서 자동으로 파악되고, 같은 변수에 여러 타입의 값을 넣을 수 있다는 뜻이다.* 그렇기 때문에 프로그램 규모가 커질 수록, Typescript와 같은 대체제를 사용한다. (타입에 따른 실수를 방지 하기 위한 방법이자 도구이다.)
var test; // undefined test = null; // null test = 1206; // Number test = "Ryuk"; // String test = true; // Boolean test = Symbol("key"); // ES6 추가 Symbol
(1) undefined
* 선언되었지만, 초기화가 되지 않음을 의미한다.
* undefined 타입은 undefined만 갖을 수 있다.
* 초기화가 진행 된 변수를 다시 undefined로 초기화를 할 수 있다. 하지만, 다시 값이 없음을 의미하기 위해
null
이 존재하기 때문에 우리는 값이 undefined일 경우 초기 생성 된 상태라는 것으로 상태를 사용할 수 있을 것 이다.var test; // undefined test = "something"; // string // undefined 하지만, 보통 초기화 된 상태에서는 다시 undefined으로 초기화 하지 않는다. test = undefined; // undefined
(2) null
*
값이 없음
을 의미한다.* null 타입은 null만 갖을 수 있다.
var test; // undefined test = null; // null
(3) Boolean
* 논리적 요소를 나타내는 타입이고, true와 false 두 값을 갖을 수 있다.
* 0 - false 그 외, 모든 값은 true이다.
(4) Number
* 정수, 실수, 음수를 표현할 수 있다.
*
+,- Infinity
/+,- 0
/Number.MAX_VALUE, Number.MIN_VALUE
/NaN (숫자 아님)
등 다양한 상수값과 무한대, 0을 양수 음수로 표현하는 등 많은 기능이 있다.*
Number.MAX_SAFE_INTEGER(9007199254740991)
,Number.MIN_SAFE_INTEGER (-9007199254740991)
해당 범위를 벗어나면 JS에서 숫자는 더 이상 안전하지 않다.* 다루는 숫자가 커진다면, BigNumber 라이브러리를 활용하거나 직접 만들어야 한다.
16자리가 넘어간다면 JS Number를 다시 찾아봐야한다
는 정도만 인지 하고 넘어가면 될 것 같다.(5) String
* 문자 || 텍스트를 나타내는 타입이다.
* 정규식을 통하여, string 형식을 바꿀 수 있다.
* JS 문자열은 변경 불가능 상태(immutable)이다. 문자열이 한번 생성 되면, 중간중간 특정 값들을 수정할 수 없다는 이야기다. 하지만, String.substr(), String.concat() 등을 활용하여 다시 변수에 대입하여 재활용 할 수 있다.
// 정규식을 통한 toLocaleString() // 1206 -> 1,206 var test = 1206; test.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
var test = "안냐세여~~" // immutable하기 때문에 ~~ 만 삭제할 수 없다. // 하지만, 함수들을 활용해서 변경할 수 있다. test = test.substr(0, 4); // 안냐세여
(6) Symbol
* ES6 (ECMAScript 6)에서 추가 되었다. symbol은 유일하고 변경 불가능(immutable)한 타입이다.
* 객체 속성의 key값으로 사용 될 수 있고, C언어의 enum과 비슷하다.
* Symbole을 정확하게 이해하고 공감하려면, object & key에 대하여 먼저 알아야할 것 같다.
var symbol = Symbol("abc"); // Symbol(abc) var symbol2 = Symbol("abc"); // Symbol(abc) // 같은 값의 key를 대입하여도, Symbol로 선언하면 같지 않다.
'간단정리' 카테고리의 다른 글
[JS] 암묵적(Implicit), 명시적(Explicit) 형변환 (0) 2020.07.09 [JS] 유형 비교 `==`와 엄격한 비교 `===`의 차이점 (0) 2020.07.07 [JS] undefined / null / NaN 차이점 (0) 2020.07.07