[책] 자바스크립트 코드 레시피 278 - 64일차

wangkodok·2022년 5월 25일
0

값(Value)전달과 참조(Reference)전달 이해하기

  • 원시 타입과 객체 타입의 처리를 이해하고 싶을 때

구문

  • 원시(Primitive) 타입 값의 전달
  • 객체(Object) 타입 참조의 전달

실습

원시 타입
1. 변수 a에 100을 대입한다.
2. 변수 b에 변수 a를 대입한다. 변수 a에 대입한 값 100을 복사하여 변수 b에 전달한다. (값에 의한 전달)
3. 변수 a에 500을 대입한다.
4. 변수 b의 데이터는 변함없이 100이 출력된다.

let a = 100;
let b = a;
a = 500;
console.log(b); // 100;

객체 타입
1. 변수 a에 1, 2, 3알 참조하는 배열을 대입한다.
2. 변수 b에 변수 a를 대입한다. 변수 a에 저장된 배열의 참조 값이 변수 b에 전달된다. (참조에 의한 전달)
3. 변수 a에 저장된 배열의 첫 번째 요소가 100을 참조한다.
4. 변수 b와 변수 a는 같은 배열을 참조하기 때문에 [100, 2, 3]이 출력된다.

// 배열
let a = [1, 2, 3];
let b = a;
a[0] = 100;
console.log(b) // [100, 2, 3];

객체 타입 응용 (오브젝트)

// 오브젝트
let c = {
    id: 'user',
    pw: 1234,
}
let d = c;
c.pw = 5678;
console.log(d); // id 값이 5678 출력된다.

함수의 원시 타입, 객체 타입 실습

함수의 원시 타입

function myFunction(x) {
    x = x + 2;
}
let s = 10;
myFunction(s)
console.log(s); // 10

함수의 객체 타입

function myf(i) {
    i[0] = '하';
}
let j = ['가', '나', '다'];
myf(j);
console.log(j); // ['하', '나', '다']
profile
기술을 기록하다.

0개의 댓글

관련 채용 정보