🚨제가 이해해서 정리한 것은 틀릴 수 있단 걸 알기에 잘못된 부분 제보나 덧붙일 설명, 의견 공유는 언제나 환영합니다!

함수 호출에서 인자를 어떻게 전달 하고 매개 변수로 받는지에 대한 방식
Call by Value 는 값에 의한 전달로 값을 복사한다.
Call by Reference 는 참조에 의한 전달로 주소 값을 전달한다.
❗결론부터 말하자면 자바스크립트는 항상 Call by Value 방식이다.
자바스크립트는 원시 값일 경우 Call by Value, 참조 값일 경우 Call by Reference 방식으로 전달한다.
거기에 대한 답은 아래와 같다.
포인터와 Call by Reference 개념을 가진 C, C++ 같은 언어에서는 완전한 주소 값으로 연결되어 있다.
하지만 자바스크립트는 주소 값을 참조하는 것 같지만 주소 값의 복사본을 만들어서 전달한다. (관련해서 Call by Sharing 이라는 개념도 있지만 여기선 작성하지 않고 참고 링크를 걸어두겠습니다.)
이러한 동작은 Call by Value 의 원리와 같이 메모리 공간에 저장되어 있는 값을 복사하여 전달한다는 점에서 자바스크립트는 항상 Call by Value 방식이다.
자바스크립트의 방식은 주소 값의 복사본을 만들어서 전달하기 때문에 메모리 사용량이 늘지만 메모리 주소를 직접적으로 조작할 수 없어 메모리 안전성과 보안적인 이점을 제공하면서 객체지향 프로그래밍에서 객체와 같은 참조 값들을 다루는데 용이하다.
'Call by value'와 'Call by reference' (feat. 자바스크립트)
[JS] 📚 Call by Value & Call by Reference (+ Call by Sharing)