[TIL/모던 자바스크립트 Deep Dive] 2023/05/11
11장
11장. 원시 값과 객체의 비교
자바스크립트는 7가지의 데이터 타입을 제공한다. 다음과 같다.
- ``원시 타입``: 숫자, 문자열, 불리언, null, undefined, 심벌 - ``객체 타입``
데이터 타입은 크게 세 가지 측면에서 구분된다.
1. 원시 값은 ``변경 불가능한 값(immutable value)`이고, 객체는 `변경 가능한 값(mutable value)``이다. 2. 원시 값을 변수에 할당하면 변수(=확보된 메모리 공간)에는 ``실제 값`이 저장된다. 객체를 변수에 할당하면 변수(=확보된 메모리 공간)에는 `참조 값``이 저장된다. 3. 원시 값을 갖는 변수를 ``다른 변수에 할당`하면 원본의 `원시 값이 복사되어 전달`된다.(=`값에 의한 전달`), 객체를 가리키는 변수를 `다른 변수에 할당`하면 원본의 `참조 값이 복사되어 전달`된다.(=`참조에 의한 전달``)
11-1. 원시 값
변경 불가능한 값
원시 값은 변경 불가능한 값(=immutable value)이다. 한번 생성된 원시 값은 읽기 전용 값으로서 변경할 수 없다. 그렇다면 immutable이 구체적으로 의미하는 바가 무엇일까?
=> ``변수`는 달리 표현하면 `메모리 공간 혹은 그 이름`이다. `값`은 `표현식이 평가되어 생성된 결과`다. `immutable의 대상`은 기본적으로 변수가 아니라 `값``이다. 따라서 변수는 언제든지 재할당을 통해 변수 값을 교체할 수 있다. 상수는 한 번만 할당이 허용되기에, 사실상 재할당이 금지된 변수일 뿐이라고 할 수 있다. 상수와 변경 불가능한 값을 동일 선상에 놓을 수 없다는 뜻이다.
=> 원시 값을 할당한 변수에 새로운 원시 값을 재할당하면, 재할당 이전의 원시 값이 변경되는 것이 아니라 '새로운 메모리 공간을 확보'하고 재할당한 원시 값을 저장한 후, 변수는 새롭게 재할당한 원시 값을 가리키는 것이다. '새로운 메모리 공간을 확보'했기에 변수가 참조하던 메모리 공간의 주소는 변경된다.
immutable이 구체적으로 의미하는 바가 무엇인지 알아본다고 했으면서 왜 변수에 대해 떠드는가?
=> 변수가 참조하던 ``메모리 공간의 주소가 변경되었다는 사실`은, 원시 값이 `immutable value라는 것에 대한 반증``이기 때문이다. 원시 값이 mutable value라면 메모리 공간의 주소를 바꿀 필요가 없다. 원시 값 자체를 변경하면 그만이기 때문이다. 하지만 원시 값은 immutable value이기에 값을 직접 변경할 수 없어서, 결과적으로 새로운 메모리 공간을 확보하게 된다.
ㄱㄹㅅ 불변성(immutability)이 뭔데?
More to read
프론트엔드와 백엔드 사이
HTTP 상태 코드는 프론트엔드에서 백엔드로 보냈던 요청의 수행 결과를 의미하는 일종의 약속이며, API를 구성하는 핵심 요소 중 하나입니다. 상태 코드와 관련하여, 백엔드는 잘 모르는 프론트엔드의 슬픈 사정이 있습니다.아래는 요청이 실패했음에도, 백엔드에서 상태 코드
JWT토큰 관리 방식 톺아보기
0. 들어가며 🎯 서비스에 접근하려는 사용자가 누구인지 확인하는 과정을 사용자 인증이라고 합니다. 인증된 사용자에게 주어진 권한을 확인하는 작업은 인가라고 부릅니다. 이번 글에서는 인가는 다루지 않습니다. 사용자 인증에는 많은 방식이 있지만, 오늘은 세션 인증 방
A2AA2A / MCP 멀티 에이전트 오케스트레이션
0. 들어가며 ✍️ Google for Developers에, 레스토랑 공급망 시나리오로 엮은 6대 프로토콜(MCP, A2A, UCP, AP2, A2UI, AG-UI)에 대한 가이드가 게시된 이후, MCP와 A2A부터 구현해 보는 것이 좋을 것 같다는 생각이 들었습니