`const` 는 불변 변수를 정의할 때 사용한다. 그런데 나는 지금까지 `push`, `splice`, `pop`, `shift` 같은 가변 내장 함수를 사용하여 변경해왔다. <Do it! 리엑트 프로그래밍 정석> 책을 읽다보니 무결성 제약 규칙에 대해서 설명해주었다. 결론적으로 `const`로 정의한 객체나 배열은 가변 내장 함수로 수정할 수 있긴 하지만 이런식으로 사용하는 것은 지양해야 한다. 아래와 같이 무결성 내장 함수인 `concat` 및 `slice`를 조합하면 가변 내장 함수의 기능을 동일하게 수행하도록 할 수 있다. 이 과정에서 return 된 값을 새로운 불변 변수에 대입하는 식으로 무결성 제약 규칙을 지킬 수 있다. <img width="511" alt="Screen Shot 2021-03-23 at 1 40 34 PM" src="https://user-images.githubusercontent.com/16266103/112093745-5977f880-8bdd-11eb-8aed-4d7f24a650ee.png"> 실무에서 일반적으로 무결성 제약 규칙을 사용하는지는 잘 모르겠다. 다만 저자의 회사(Aribnb)에서는 이렇게 사용하는 듯 하다.