자바스크립트 기본형과 참조형

Garam·2023년 11월 21일
0



기본형 변수 (Primitive type)

let x = 3;
let y = x;

console.log(x); // 3
console.log(y); // 3
y = 5;
console.log(x); // 3
console.log(y); // 5



참조형 변수 (Reference type)

let x = {name: 'Yushi'};
let y = x;

console.log(x); // {name: 'Yushi'}
console.log(y); // {name: 'Yushi'}
y.birth = 2004;
console.log(x); // {name: 'Yushi', birth: 2004}
console.log(y); // {name: 'Yushi', birth: 2004}

y에는 x의 값이 아니라 주소값이 전달된다.


const x = {name: 'Yushi'};
x.birth = 2004;

참조형 변수는 const로 선언하더라도 값 변경이 가능하다.
실제값이 아니라 주소값이 상수로 저장되어 있기 때문이다.



참조형 변수 복사하기

* 배열

let numbers1 = [1, 2, 3];
let numbers2 = numbers1.slice(); 
// slice에 인덱스 없으면 원래 값 그대로 리턴
// 배열을 복사하는 것과 같은 효과

numbers2.push(4);

console.log(numbers1); // [1, 2, 3]
console.log(numbers2); // [1, 2, 3, 4]

* 객체

let course1 = {
	title: '파이썬 프로그래밍 기초',
};
  
let course2 = Object.assign({}, course1);
// 혹은 for 문으로 하나하나 복사해도 됨
course2.title = '알고리즘의 정석';

console.log(course1); // 파이썬 프로그래밍 기초
console.log(course2); // 알고리즘의 정석



예제


let x = {
  numbers: [1, 2, 3, 4],
  title: 'Yushi',
};
let y = x.numbers; // 객체(참조형)
let z = x.title; // 문자열(일반형)
 
x.numbers.unshift(5);
x.title = 'Hello';

console.log(y); // [5, 1, 2, 3, 4]
console.log(z); // Yushi




0개의 댓글