값에 의한 전달 (passed by value)
- 원시 타입의 값은 값에 의한 전달 (passed by value) 방식으로 전달됩니다. 원시 타입의 값은 변경할 수 없는 값이므로 원시 타입의 값을 변경하려면 새로운 값을 재할당해야 합니다.
- 또한 원시 타입의 값은 변경할 수 없는 값이므로 함수의 매개변수로 원시 타입의 값을 전달하면 함수 내부에서 매개변수의 값을 변경해도 원본 값은 변경되지 않습니다.
const num = 1;
const increase = (num) => {
return num + 1;
};
increase(num); // 2
console.log(num); // 1
참조에 의한 전달 (passed by reference)
- 객체 타입의 값은 참조에 의한 전달 (passed by reference) 방식으로 전달됩니다. 객체 타입의 값은 변경할 수 있는 값이므로 함수의 매개변수로 객체 타입의 값을 전달하면 함수 내부에서 매개변수의 값을 변경하면 원본 값도 변경됩니다.
- 객체 타입의 값은 변경할 수 있는 값이므로 함수의 매개변수로 객체 타입의 값을 전달하면 함수 내부에서 매개변수의 값을 변경하면 원본 값도 변경됩니다.
const obj = { a: 1 };
const increase = (obj) => {
obj.a += 1;
};
increase(obj); // { a: 2 }
console.log(obj); // { a: 2 }
값에 의한 전달 (passed by value) vs 참조에 의한 전달 (passed by reference)
- 원시 타입의 값은 값에 의한 전달 (passed by value) 방식으로 전달됩니다. 객체 타입의 값은 참조에 의한 전달 (passed by reference) 방식으로 전달됩니다.
- 원시 타입의 값은 변경할 수 없는 값이므로 원시 타입의 값을 변경하려면 새로운 값을 재할당해야 합니다. 객체 타입의 값은 변경할 수 있는 값이므로 함수의 매개변수로 객체 타입의 값을 전달하면 함수 내부에서 매개변수의 값을 변경하면 원본 값도 변경됩니다.
Reference
'Javascript' 카테고리의 다른 글
[ Javascript ] This 란 무엇인가? (0) | 2023.01.17 |
---|---|
[ JavaScript ] 고차함수 ( HOF ) 란 무엇인가? (0) | 2023.01.17 |
[ Javascript ] 얕은 복사 vs 깊은 복사 (0) | 2023.01.16 |
[ JavaScript ] ==, === 의 차이점 (0) | 2023.01.16 |
[ JavaScript ] Arrow Function ( 화살표 함수 ) (0) | 2023.01.16 |