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 |