코어자바스크립트 01 | 데이터 타입

yuriyaam·2021년 1월 29일
0
post-thumbnail

01. 데이터 타입의 종류

  • 기본형 : 숫자, 문자열, 불리언, null, undefined, (+ES6 : 심볼)
  • 참조형 : 객체, 배열, 함수, 날짜, 정규표현식, (+ES6 : Map, WeakMap, Set, WeakSet)

기본형과 참조형을 구분하는 기준은 뭘까?

  • 기본형 : 값이 담긴 주솟값을 바로 복제
  • 참조형 : 값이 담긴 주솟값들로 이루어진 묶음을 가리키는 주솟값을 복제

02. 식별자와 변수

  • 식별자 : 메모리 주솟값 = 변수명
  • 변수 : 변할 수 있는 데이터가 담길 수 있는 공간

03. 변수 선언과 데이터 할당

변할 수 있는 데이터를 만든다. 이 데이터의 식별자는 a로 한다. 즉, 변수란 결국 변경 가능한 데이터가 담길 수 있는 공간 또는 그릇을 말한다.

01 var a;
02 a = 'abc';
  • 01 선언 과정 : 메모리에서 비어있는 공간을 확보하여 그 공간의 이름을 선언
  • 02 할당 과정 : a라는 이름을 가진 주소를 검색해서 그곳에 문자열 'abc'를 할당

조금 더 자세히 풀어쓰면,
① 메모리 '변수 영역'에 빈 공간을 확보하여 이름 'a'를 선언하고 그 값은 undefined를 항당한다.
② 메모리 '데이터 영역'에 빈 공간을 확보하여 문자열 'abc'를 저장
데이터 영역 'abc'의 주소를 변수영역 이름 'a'의 값에 저장

변수영역, 데이터영역을 나누어 한 단계 더 거치는 이유는?

문자열은 특별히 정해진 공간 규격이 없다. 한 글자마다 영어는 1바이트, 한글은 2바이트 등으로 메모리 용량이 가변적이기 때문이다.

04. 불변값과 가변값

불변값과 상수를 같은 개념으로 오해하기 쉬우나, 다르다. 기본적으로 기본형은 불변값, 참조형은 가변값이다. 참조형 데이터는 여러개의 프로퍼티(변수)를 모아둔 '그룹'이기 때문에 기본형과 차이가 있으며, 이로 인해 참조형 데이터는 '가변값'이 된다.

05. undefined와 null

  • undefined : 어떤 변수에 값이 존재하지 않을 때 자바스크립트 엔진이 자동 부여
    ① 값을 대입하지 않은 변수. 즉, 데이터 영역의 메모리 주소를 지정하지 않은 식별자에 접근할 때
    ② 객체 내부의 존재하지 않는 프로퍼티에 접근하려고 할 때
    ③ return문이 없거나 호출되지 않는 함수의 실행 결과
  • null : 사용자가 명시적으로 '없음'을 표현하기 위해 대입한 값

※ 주의할 점

자바스크립트의 버그인데, typeof null을 해보면 object로 나온다. 따라서 어떤 변수의 값이 null인지 여부를 판별하려면 typeof 대신 다른 방식으로 접근해야 한다. (===)

0개의 댓글