1) 기본형(Primitive type)
숫자/문자열/Boolean/null/undefined/Symbol 등
이름 | 설명 | 추가 설명 |
---|---|---|
숫자(Number) | 어떠한 것으로도 감싸지지 않고 쓰여진 숫자 | |
문자(String) | JavaScript에 ""('') 안에 text 형태로 입력되는 문자열을 의미함 | Stirng 추가설명 |
Boolean | true/false 2가지 형태의 데이터 유형 | falsy: boolean 문맥안에서 false로 인식되는 값들을 의미 - 0 - Empty strings like " " or ' ' - null - undefined - NaN, or Not a Number |
Null | 내부적으로 어떤 값도 표현하지 않는 데이터 유형 | 어떤 변수에 값이 존재하지 않음을 명시적으로 나타낼때 사용 |
undefined | 정의되지 않은 데이터 유형을 의미하며 null과는 다른 의미로 쓰임 | - 값을 대입하지 않은 변수에 접근할 때 - 객체 내부의 존재하지 않은 Property에 접근할 때 - return 문이 없거나 호출되지 않는 함수의 실행 결과 |
Symbol | 객체의 Property를 위한 고유의 식별자로 쓰임 | ES6에 새롭게 추가된 유형 |
2) 참조형(Reference type)
객체/배열/함수/날짜/정규표현식 등
변수 선언
: 변경 가능한 데이터가 담길 수 있는 공간 또는 그릇을 만드는 행위
데이터 할당
: 변수를 선언하여 어떤 값을 할당하게 되면 자바스크립트 엔진은 다음과 같은 데이터 할당 프로세스를 진행한다.
① 변수 영역에서 빈 공간을 할당한다.
② 확보한 공간을 선언한 변수명으로 지정한다.
③ 데이터의 빈 영역에 변수의 값을 저장한다.
④ 변수 영역에서 변수명을 검색한 뒤 데이터가 저장된 주소를 변수영역과 연결한다.
변수 영역과 데이터 영역을 구분하는 이유는 데이터 변환을 자유롭게 하고 메모리를 효율적으로 관리하기 위함이다.
만약 미리 확보한 영역에서만 데이터 변환을 할 수 있다면
데이터를 다시 저장해야 할 때 데이터의 크기가 커지는 경우
, 영역을 늘리는 작업이 필요하고 그 작업을 수행하기 위해서는 모든 데이터 영역을 재구성 해야하는 불필요한 연산작업이 수반
되야 할 것이다.
참조형 데이터의 경우, 변수를 복사하는 과정은 기본형과 다르지 않다. 다만 데이터 할당의 경우 참조형의 경우, 데이터 영역 → 객체의 변수 영역의 주소 복사가 추가로 이뤄진다는 차이가 있다.
참조형 데이터의 '가변'은 데이터 자체가 아닌 내부 프로퍼티가 변경될 때만 성립된다.
출처-코어 자바스크립트