HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/
NodeJs
NodeJs
/
Javascript
Javascript
/
Call By Sharing

Call By Sharing

[ 참고링크 ]
function change(num, obj1, obj2) { num = num * 10; obj1.item = "changed"; obj2 = {item: "changed"}; } var num = 10; var obj1 = {item: "unchanged"}; var obj2 = {item: "unchanged"}; change(num, obj1, obj2); console.log(num); console.log(obj1.item); console.log(obj2.item); // 10 // changed // unchanged
  • 값으로 전달하는 방식이라면 obj1.item 값이 변해서는 안 되고, 참조로 전달하는 방식이라면 obj2.item 값이 변해야 하지만 두 방식 모두 만족하지 못한다. Call by Sharing 방식으로 설명할 수 있고 자바 진영에서는 Pass by Value, 루비 진영에서는 Pass by Reference 라고도 한다.
  • 참조로 전달하는 방식과 차이점은 함수 안에서 인자를 새로 할당했을 때 호출한 곳에서 접근할 수 없다는 점이다.
요약
  • 함수에 문자열, 숫자 등의 기본 형태의 인자를 넘기면 값을 복사한 지역 변수로 사용한다.
  • 함수에 객체 형태의 인자를 넘기면 속성은 공유하지만 새로 객체를 할당할 수는 없다.