프론트엔드/한줄코딩

JS call-by-value, call-by-reference

.log('FE') 2021. 12. 29. 19:03
728x90
반응형

 

 

콘솔에 무엇이 찍힐지 예측 가능한가요?

 

우선 call-by-value / call-by-reference 가 무엇인지 부터 확인해 보겠습니다.

 

자바스크립트에서 함수를 호출할때 매개변수를 할당 받을 수 있습니다. 매개변수는 여러개가 될수도있고 단일값일수도있고 객체나 또 다른 함수가 될 수도 있습니다. 이 매개변수를 전달하는 방식에 따라서 Call by value , Call by reference 로 나눌 수 있습니다.

 

단일 값에 의한 매배변수 전달은 함수를 호출했을때 함수내에서 지역변수로서 사용되며 따라서 값이 복사되어 사용됩니다. 

즉 함수 내에서만 값의 변경이 발생하고 원본 값에는 영향을 주지 않습니다. 값의 불변성을 유지할 수 있지만 지역변수로 복사하여 활용하는만큼 메모리를 소모합니다.

 

객체 즉 참조에 의한 매개변수 전달은 값이 전달되는것이 아니라 해당 객체가 저장된 메모리의 주소를 넘겨주게됩니다. 즉 값의 복사가 아니라 원본데이터와 동일한 메모리주소를 바라보고 있습니다. 때문에 함수내에서 값의 변경이 이루어지게되면 원본값 또한 변하게 됩니다. 

값의 복사가 아닌 메모리에 직접 접근이기 때문에 처리가 빠르고 메모리를 절약 할 수 있지만 원본데이터의 불변성이 지켜지지 않는다는 단점이 있습니다. 

 

해당 내용을 바탕으로 예제 코드의 정답을 맞춰보면

1. 10

2. { js: 10, react: 20, cpp : 1 }

3. 10

4. { js: 15, react: 20, cpp : 1 }

 

 

 

728x90
반응형

'프론트엔드 > 한줄코딩' 카테고리의 다른 글

언제 리액트를 시작해야할까?  (0) 2022.03.14
Custom Input Radio  (0) 2022.03.10
JS - commaParser  (0) 2021.12.01
FEConf KOREA 2021 에서 받은 인사이트  (0) 2021.11.07
함수선언식과 화살표 함수의 차이  (0) 2021.10.25