반응형
자바스크립트 기본형 값의 특징은 변경할 수 없다는 점이다.
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는 수정할 수 없는 값이라는 뜻이지만 엄밀히 말하자면 변수를 덮어쓸 수 없다는 뜻이다.
- 즉, = 연산자를 사용해 새 값을 할당할 수 없다는 뜻이다.
반응형
'Dev > React' 카테고리의 다른 글
[React] 동적 값 출력 및 활용 (0) | 2024.07.05 |
---|---|
[React] JSX와 리액트 컴포넌트 (0) | 2024.07.05 |
[JS] 함수를 값으로 사용하기 (0) | 2024.07.05 |
[JS] 스프레드 연산자(...) (0) | 2024.07.05 |
[JS] 배열 및 객체의 분해(디스트럭처링) (0) | 2024.07.05 |