-
[생활코딩] JavaScript 데이터 타입Study/JavaScript 2019. 12. 9. 10:19반응형
데이터 타입 Data type
데이터 타입이란 데이터의 형태를 의미한다. 데이터 타입은 크게 두가지로 구분할 수 있다. 객체와 객체가 아닌 것.
객체가 아닌 데이터 타입을 원시 데이터 타입(primitive type)이라고 한다. 그 외의 모든 데이터 타입들은 객체다.
◆ 원시 데이터 타입(primitive type) : 숫자, 문자열, boolean(true/false), null, undefined
객체 뒤에 등장하는 점 . : object access operatorvar str = 'coding'; console.log(str.length); // 6 console.log(str.charAt(0)); // "C"
위와 같이 문자열은 분명히 프로퍼티와 메소드가 있다. 하지만 문자열은 객체가 아니다.왜냐하면 내부적으로 문자열이 원시 데이터 타입이지만 문자열과 관련된 어떤 작업을 하려고 할 때,
자바스크립트는 임시로 '문자열 객체'를 만들고 사용이 끝나면 제거하기 때문이다. 이러한 처리는 내부적으로 일어난다.
var str = 'coding'; str.prop = 'everybody'; console.log(str.prop); // undefined
str.prop를 하는 순간에 자바스크립트 내부적으로 String 객체가 만들어진다.prop 프로퍼티는 이 객체에 저장되고 이 객체는 곧 제거 된다.
그렇기 때문에 prop라는 속성이 저장된 객체는 존재하지 않게된다.
하지만 문자열과 관련해서 필요한 기능성을 객체지향적으로 제공해야 하는 필요 또한 있기 때문에원시 데이터 형을 객체처럼 다룰 수 있도록 하기 위한 객체를 자바스크립트는 제공하고 있는데
그것이 레퍼객체(wrapper object)다.
◆ 레퍼객체(wrapper object) : String, Number, Boolean예시) String.prototype.substring()
// str.substring(indexStart[, indexEnd]) let str = 'Mozilla'; console.log(str.substring(1, 3)); // expected output: "oz"
원시 데이터 타입과 객체
var a = 1; 을 해석하자면,
1이라는 숫자(원시 데이터 타입)을 생성하여, 변수 a에 대입한다.
또한,
var a = {'id' : 1};을 해석하면,
id가 1이라는 객체를 생성하여, 변수 a에 대입한다.
그리고, 변수에 변수를 대입할경우,
var b = a; 를 해석하자면,
## a가 원시데이터타입을 가지고 있을때
변수 a가 가지고 있는 숫자나 문자 불리언을 복사 해서 변수 b에 대입한다.
## a가 객체를 가지고 있을때
변수 a에 대입되어 있는 객체에 변수 b도 링크(참조)한다.
즉, 변수 a와 변수 b는 같은 객체를 바라본다.
그리고 만약에 b = {'id' : 2} 라고 새로운 객체를 대입할 경우
a와 b는 서로 다른 객체를 바라보는 것이기 때문에 a는 변하지 않는다.
정리하면 변수에 담겨있는 데이터가 원시형이면 그 안에는 실제 데이터가 들어있고, 객체면 변수 안에는 데이터에 대한 참조 방법이 들어있다고 할 수 있다.반응형'Study > JavaScript' 카테고리의 다른 글
자바스크립트 비동기 처리 다루기 (Asynchronous call) (0) 2020.02.08 [생활코딩] JavaScript 정규표현식 (0) 2019.12.09 [생활코딩] JavaScript 객체지향 : 상속, Prototype, Object (0) 2019.12.08 [생활코딩] JavaScript 객체지향 : this (0) 2019.12.08 [생활코딩] JavaScript 객체지향 : 생성자와 new (0) 2019.12.07