동작을 읽기, 쓰기 또는 둘다로 분류하기

  1. 읽기 :

    1. 읽기 동작은 데이터를 바꾸지 않고, 정보를 꺼내는 것이다.
    2. 데이터가 바뀌지 않기 때문에 다루기 쉽다.
    3. 만약 인자에만 의존해, 정보를 가져오는 읽기 동작이라면, 계산이라고 할 수 있다.
  2. 쓰기 :

    1. 쓰기 동작은 어떻게든 데이터를 바꾼다.
    2. 바뀌는 값은 어디서 사용될지 모르기 때문에 바뀌지 않도록 원칙이 필요하다.

<aside> 💡 쓰기 동작은 불변서의 원칙에 따라 구현해야한다. “카피 온 라이트”

</aside>

카피온 라이트 원칙 세단계

  1. 복사본 만들기
  2. 복사본 변경하기 ( 원하는 만큼 )
  3. 복사본 리턴하기
// 배열을 인자로 받아서 변경후 복사본 배열을 return 함.
function add_element_last(array, elem){
	// 1. 배열 복사
	var new_array = array.slice();
	// 2. 배열 변경
	new_array.push(elem);
	// 3. 복사본 return
	return new_array;
}