참조형과 원시형 차이
원시 값은 불변이고, 원시 값을 복사/전달할 때는 값 자체를 복사/전달.
'원본'의 값이 바뀌더라도 '사본'의 값이 따라서 바뀌지 않음.
let a = 1;
let b = a; // b는 a를 가리킬 뿐 a가 아님.
a = 2; // a의 값을 바꿈.
console.log(b); // 1 // 재할당한 값으로 바뀌지 않음.
a === 2; // true
값 자체를 전달하므로 함수 안에서 변수의 값이 바뀌어도 함수 외부에서는 바뀌지 않은 상태로 남음.
function func(a) {
a = 5;
console.log(a); // 5
}
a = 3;
func(a);
console.log(a); // 3
객체를 가리키는 변수는 그 객체를 가리키고 있을 뿐, 객체 자체는 아니므로 변수와 객체는 일치하지 않음.
let a = { a: 3 };
a === { a: 3 } // false
function change(o) {
o.a = 999;
}
let o = { a: 1 };
change(o);
console.log(o); // { a: 999 }
'Front-End' 카테고리의 다른 글
[JS] 배열 (0) | 2020.04.30 |
---|---|
[JS] 스코프 (0) | 2020.04.30 |
[JS] 함수 (0) | 2020.04.30 |
[JS] 표현식과 연산자 (0) | 2020.04.30 |
[JS] 리터럴과 변수, 상수, 데이터 타입 (0) | 2020.04.30 |