javascript의 이상한 동작: 기본 유형 및 참조 유형
4089 단어 beginnersjavascript
이 주제에 대한 블로그 게시물을 작성하는 것이 좋을 것이라고 생각했습니다.
코드 스니펫부터 시작하겠습니다.
let a = 1;
let b = a;
console.log(b); // 1
a = 2;
console.log(b); // 1
괜찮아 보이는데 개체에 대해 같은 작업을 수행해 보겠습니다.
let a = {
someText: 'Hello',
};
let b = a;
console.log(b); // { someText: "Hello" }
a.someText = 'Hi';
console.log(b); // { someText: "Hi" }
이것은 예상치 못한 결과를 낳았습니까?
이 게시물이 끝날 때까지 왜 이런 일이 발생하는지 이해하게 될 것입니다. 자세히 살펴보겠습니다.
기본 및 참조 유형이란 무엇입니까?
Javascript에는 6가지 기본 유형이 있습니다.
및 3가지 참조 유형
기본 유형
고정 크기 메모리에 저장된 기본 유형,
메모리에 저장된 "a"의 정확한 값,
여기에 예제가 더 도움이 될 것이라고 생각합니다.
우리는 변수 "a"를 만들었고 다음과 같이 메모리에 배치했습니다.
그런 다음 변수 "a"의 메모리 값을 변수 "b"에 복사했습니다.
괜찮은 것 같습니다. 참조 유형이 어떻게 되는지 살펴보겠습니다.
참조 유형
참조 유형은 기본 유형에 비해 더 복잡하고 더 많은 공간을 차지합니다.
고정 메모리에 저장할 수 없으므로 메모리의 임의 위치에 저장됩니다.
그것의 다이어그램을 보자
메모리에 저장된 값은 실제 값 자체가 아니라 실제 값에 대한 참조입니다.
변수 "a"를 "b"로 복사할 때 메모리 값(실제 개체 참조)을 복사합니다. 그래서 참조 값이라고 합니다.
변수 "a"를 복사할 때 실제 값을 복사하지 않고 실제 값에 대한 참조를 복사합니다.
그렇기 때문에 "a"의 속성을 변경하면 "b"도 변경됩니다.
원천
https://github.com/leonardomso/33-js-concepts
읽어 주셔서 감사합니다
질문이 있으시면 아래에 자유롭게 질문하십시오.
Reference
이 문제에 관하여(javascript의 이상한 동작: 기본 유형 및 참조 유형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mutludev/weird-behaviors-of-javascript-primitive-types-and-reference-types-11gg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)