본문 바로가기
Dev/React

[JS] 참조형과 기본 값 비교

by Ellen571 2024. 7. 5.
반응형

자바스크립트 기본형 값의 특징은 변경할 수 없다는 점이다.

let userMessage = "Hello";
console.log(userMessage); // 주소: 1000 값: Hello

userMessage = "Hello there";
console.log(userMessage); // 주소: 1001 값: Hello there

userMessage = userMessage.concat('!!!');
console.log(userMessage); // 주소: 1002 값: Hello there!!!
  • userMessage에 다른 값을 저장할 수 있지만, 이렇게 하면 새로운 스트링이 생성된다.
  • 기존 메모리에 저장된 스트링이 다른 스트링으로 변경되는 것이 아니다.
  • 스트링 변수에 메소드(concat)를 실행해도 기존 스트링 수정이 아닌 새 스프링이 생성된다.
  • 스트링뿐만 아니라 숫자, 불리언 모두 항상 새 값이 생성된다.

 

 

객체(객체, 배열)는 다르다.

const hobbies = ["Sports", "Cooking"]; // 주소: 1000 값: ["Sports", "Cooking"]
hobbies.push("Working");
console.log(hobbies); // 주소: 1000 값: ["Sports", "Cooking", "Working"]
  • 배열에 내장 메소 메소드 push로 값을 추가하면 기존 배열을 수정한다.
  • 자바스크립트의 객체(객체, 배열)는 참조형 값이기 때문이다.
  • 참조형은 변수에 값을 저장할 때 값 자체를 저장하는 게 아니라 해당 값의 메모리 주소를 저장한다.
  • push가 실행되면 해당 주소를 찾아 값을 열고 새 값을 추가한다.
  • const는 수정할 수 없는 값이라는 뜻이지만 엄밀히 말하자면 변수를 덮어쓸 수 없다는 뜻이다.
  • 즉, = 연산자를 사용해 새 값을 할당할 수 없다는 뜻이다.
반응형