8 : 20 개발실Log
홈
생각정리
방명록
8시20분 ::
8 : 20 개발실Log
방명록 남기기
[1장] 데이터 타입
책 스터디 정리/코어 자바스크립트
2023. 4. 16. 08:20
자바 스크립트의 데이터 타입
기본형
number
string
boolean
null
undefined
Symbol(ES6 스펙 추가)
참조형
Object
Array
Function
Date
RegExp
Map, WeakMap, Set, WeakSet(ES6 스펙 추가)
기본형/참조형 구분
기본형은 할당/연산시 복제
값이 담긴 주소값을 바로 복제
참조형은 주소를 참조
값이 담긴 주소값의 묶음을 가리키는 주소값을 복제
메모리와 데이터
정적 타입 언어 (C/C++, 자바 등) → 데이터 타입별로 할당 메모리 영역 구분
개발자가 직접 형변환 필요
자바스크립트 → 넉넉하게 메모리 할당
개발자가 형변환 할 일 ↓
모든 데이터는 메모리 주소값으로 서로 구분하고 연결
식별자와 변수
변수 → 변할 수 있는 데이터
식별자 → 데이터를 식별하는데 사용하는 이름: 변수명
변수 선언과 데이터 할당
변수: 변경 가능한 데이터가 담길 수 있는 공간 또는 그릇
사용자가 메모리 주소에 접근 시 해당 메모리에 담긴 데이터를 반환
변수에 데이터 할당시 별도의 메모리 공간 확보후 저장 → 해당 메모리 주소를 변수 영역에 저장함
변수 영역에 값 직접 대입하지 않는 이유
데이터 변환의 자유로움
메모리 효율적 관리
숫자형 데이터는 8바이트(64비트) 공간 확보 : 문자열 데이터는 정해진 규격이 없음
영어는 1바이트, 한글은 2바이트로 필요한 용량이 가변적임
효율적인 문자열 데이터의 변환을 위해 변수와 데이터를 별도로 나누어 저장
중복된 데이터에 대한 처리 효율 상승
기본형 데이터와 참조형 데이터
불변값
변수/상수의 구분점: 변경 가능성
변수 영역 메모리 vs 데이터 영역 메모리
기본형: 숫자, 문자열, boolean, null, undefined, Symbol → 불변
한번 만든 값 변경 불가
새로 만드는 동작으로만 변경 가능
가변 값
참조형 데이터 vs 기본형 데이터
객체 변수 영역이 별도로 존재
데이터 영역에 저장된 값: 불변값
변수에는 다른 값 대입 가능: 참조형 데이터가 가변이라 불리는 이유
중첩 객체: 참조형 데이터의 프로퍼티에 참조형 데이터를 할당하는 경우
참조 카운트가 0인 메모리 주소는 가비지 컬렉터의 수거 대상: 빈 공간으로 변경
불변 객체
참조형 데이터의 가변: 내부 프로퍼티를 변경할 때만 성립
데이터 자체를 수정하면 기존 데이터는 변경되지 않음
불변 객체가 필요한 경우
값으로 전달받은 객체에 변경을 가하더라도 원본 객체에 영향이 가지 않아야하는 경우
얕은 복사와 깊은 복사
얕은 복사
바로 아래 단계의 값만 복사하는 방법
원본과 사본이 모두 동일한 데이터의 주소를 가리킴: 사본을 바꾸면 원본도 바뀜
깊은 복사
내부의 모든 값을 전부 복사하는 방법
원본과 사본의 데이터 주소가 다름: 사본의 수정이 원본까지 영향 X
기본형 데이터일 경우 그대로 복사
참조형 데이터는 내부의 프로퍼티들을 복사
undefined와 null
자바스크립트 '없음'을 나타내는 값
undefined
사용자가 명시적으로 지정할 수 있음
JS 엔진이 자동으로 부여함
undefined를 반환하는 경우
값을 대입하지 않은 변수
객체 내부의 존재하지 않는 프로퍼티
return 문이 없거나 호출되지 않은 함수의 실행 결과
null
'비어있음'을 명시적으로 나타내고 싶을 때 사용
type of null이 object로 뜸: JS 자체 버그
일치 연산자(===)를 써야지 타입을 확실히 판별 가능
공유하기
게시글 관리
8 : 20 개발실Log
저작자표시
티스토리툴바
8 : 20 개발실Log
구독하기
[1장] 데이터 타입
자바 스크립트의 데이터 타입
기본형/참조형 구분
메모리와 데이터
식별자와 변수
변수 선언과 데이터 할당
기본형 데이터와 참조형 데이터
불변 객체
얕은 복사와 깊은 복사
undefined와 null
자바스크립트 '없음'을 나타내는 값