Value Context vs Identifier Context
#
Value Context변수가 메모리에 저장이 된다.
메모리에 1번 주소와 2번 주소에 3을 각각 넣는다.
메모리 주소와 관계 없이 값이 같으면 같다라고 판단한다.
값은 메모리 주소가 중요치 않다.
값의 정의
- 프로그래밍 언어에 따라, 기본 설정으로 제공됨
- 자바스크립트 기본값 primitive
- null, undefined, boolean, string, number, symbol
#
특징- 끝 없는 복사본
- 값을 할당/함수의 인자 → 언제나 복사본을 만든다
- (강제적으로) 상태 변화에 안전하다 🔗
- 강제적으로 계속 불변하는 값을 만들어내기 때문에 안전해 보인다.
- 상태관리면에서 안전한 것은 아님.
- 3과 1을 더하면 4가 새로 태어나고 3과 1은 그대로 있다
- 값을 관리하기 위해서 함수형 프로그래밍이 등장.
- 연산을 기반으로 로직을 전개
- 수학적 프로그래밍은 굉장히 복잡한 도메인의 연산을 표현하기 어렵다.
#
Identifier Contextheap 메모리에 들어가 있는 객체 O 가 있다.
A 라는 변수도 O 를 가리키고,
B 라는 변수도 O 를 가리키면,
A 와 B 는 같다 라고 한다.
똑같은 메모리에 있는 주소를 가리킴
🔗#
특징- 하나의 원본을 사용하고 객체의 내부 상태가 변한다.
- 상태 변화를 내부에서 책임짐
- 외부에서 객체의 상태를 제어하게 되면 상태의 일관성이 깨진다.
- 난이도가 있다.
- 메세지를 기반으로 로직을 전개
#
객체지향은 철저하게 Value Context 를 배제한다.반대로 함수형 프로그래밍에서 Identifier 를 쓰면 버그가 나타날 수 있다
객체지향에서 인자로 primitive → 버그 발생
좀 더 나아가
- Number 가, 어떤 것은 Age 로서, 어떤것은 Money 로써..등 이유를 생각하고 객체로 만들어야 한다.
- 생성자 인자 만 오로지 값을 받을 수 있는 메서드이다.