[JS] 데이터 타입

·2022년 10월 10일
0

JavaScript

목록 보기
3/25

원시타입

있는 그대로 저장되는 데이터를 표현

  • 원시타입 종류 : 불리언, 숫자, 문자열, Null, undefined
  • 원시타입 특징 : 원시값을 변수에 할당하면 값이 복사되어 들어간다
    원시값이 할당된 변수들은 자기 자신만의 고유한 값을 가진다
    typeof : 원시값의 종류를 알 수 있게 해주는 메소드
    null 타입에 주의! console.log(typeof) 로 알아보는 거 말고 if(value===null){} 이렇게 하는 게 정확하다
let one = 1;
let two = 2;
one = two;
one = 3;
console.log(two); // 2
값을 서로 할당했더라도 서로가 가지고 있던 값은 변하지 않는다

참조타입

자바스크립트 객체 (원시타입 빼고 전부 참조 타입)

  • 참조타입 종류
    객체: {}
    배열: []
    함수: function
    Date
    정규표현식: RegExp
  • 참조타입 특징 : 변수에 값을 직접 저장 X
    변수에 저장되는 것은 메모리 안에서 객체의 위치를 가리키는 "포인터" 포스트잇!
    무엇이 저장되느냐! 원시 타입은 값 자체가, 참조 타입은 데이터의 주소가 저장!
let objOne = {one : 1};
let objTwo = {two : 2};
objTwo = objOne; 같은 주소를 바라보게 된다 한 주소의 값을 두 가지 객체가 꺼내서 쓰고 있음
objTwo.one = 3; 한 객체가 바뀌었으니 같은 주소를 공유하고 있던 객체 값도 바뀐다
console.log(objOne);
// {one : 3}
console.log(objTwo);
// {one : 3}

원시 래퍼타입

원시 타입을 객체처럼 편리하게 사용하도록 도와준다
원시타입도 참조타입처럼 쓸 수 있다

  • 원시 래퍼 타입의 종류 : string, number, boolean
    원시 타입을 객체처럼 사용하는 순간, 자스 내부에서 사용하는 데이터의 인스턴스를 만들게 된다
    이렇게 만들어진 객체는 코드 실행 후 바로 다음 줄에서 파괴
    이러한 과정을 오토박싱(autoboxing)
let name="bit";
console.log(name.concat("coin")); // "bitcoin"

이 과정이 자스 내부에서 실제로 어떻게 이루어지고 있는 거냐면

let name="bit";
let temp = new String(name); 자스가 임시로 만든 변수가
console.log(temp.concat("coin")); 실행되면
temp = null; 파괴된다
profile
주니어 프론트엔드 웹 개발자 🐛

0개의 댓글