값의 전달
참조의 전달
원시 타입
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); // ['하', '나', '다']