Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 클라이언트 컴포넌트
- 프로그래머스
- 탐욕알고리즘
- 로딩 후 실행
- 날씨 api
- react
- 백준
- JavaScript
- 항해99솔직후기
- 항해99후기
- server component
- 실전프로젝트
- 부트캠프항해
- 서버 컴포넌트
- 중복카테고리
- 중복선택
- 카테고리필터
- greedy
- 항해99추천
- 그리디
- NextJS v13
- 배열 메소드
- 항해99
- 배열 중복 제거
- jQuery
- 자바스크립트
- db수정
- 동전 0
- 숫자를 별점으로
- 알고리즘
Archives
- Today
- Total
공부 및 일상기록
[Javascript] passed by value, passed by reference 본문
passed by value
인자로 넘기는 값을 복사해서 새로운 함수에 전달하는 방식
값에 의한 호출은 원본값이 변경될 가능성은 없지만, 고비용과 메모리의 문제점이 있다.
let a = 1;
let b = a;
console.log(a, b) // 1 1
console.log(a===b) //true
a=10;
console.log(a,b) //10 1
변수 a는 원시타입인 숫자 1을 할당했고, 원시타입은 불변성이 유지되어 b에 a를 할당하면 새로운 메모리에 1이 저장된다.
passed by reference
주소값을 인자로 전달하는 방식
참조에 의한 호출은 원본값의 변경이 일어날 수도 있다는 문제점이 있다.
const obj = { a: "apple" };
const test = obj;
test.a = "peach";
console.log(obj); // { a : 'peach' }
분명 const로 obj를 선언하였고 test에 obj를 할당한 후 test의 a를 peach로 변경했음에도 obj 역시 peach로 변경되었다.
그 이유는 복사하여 값을 전달하면서 값 자체가 아닌 값이 있는 주소를 복사하여 넘겼기 때문이다.
따라서 test의 a와 obj의 a는 값이 아닌 참조하고있는 주소값이 있는것이다. 따라서 주소를 변경한 것은 아니고 해당 주소에 있는 값이 변했으므로 obj는 변한적이 없지만 obj내부의 a의 값이 바뀌어 버린 것이다.
'개발 > Javascript' 카테고리의 다른 글
[Javascript] this (0) | 2023.01.16 |
---|---|
[Javascript] 고차함수란 (1) | 2023.01.15 |
[Javascript] ==, === 의 차이점 (0) | 2023.01.15 |
[Javascript] Arrow function (화살표 함수) (0) | 2023.01.15 |
[Javascript] 자바 스크립트는 어떻게 멀티스레드 처럼 동작할까? (0) | 2023.01.08 |