> 웹 프론트엔드 > JS 튜토리얼 > `console.log()`가 JavaScript에서 즉각적인 배열 변경 사항을 표시하는 이유는 무엇입니까?

`console.log()`가 JavaScript에서 즉각적인 배열 변경 사항을 표시하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-13 01:15:10
원래의
421명이 탐색했습니다.

Why Does `console.log()` Show Immediate Array Changes in JavaScript?

console.log()는 배열 참조의 변경 사항을 즉시 반영합니다

JavaScript에서 숫자나 문자열과 같은 기본 값을 보유하는 변수는 값으로 전달됩니다. , 객체를 포함하는 객체는 참조로 전달됩니다. 이러한 차이는 배열을 조작할 때 더욱 분명해집니다.

다음 코드를 고려하세요.

var A = [2, 1];
var C = A;

console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2]
로그인 후 복사

이 예에서 C에는 배열 A에 대한 참조가 할당됩니다. A가 정렬되면 변경 사항은 다음과 같습니다. A가 다시 액세스되기 전에도 C에 즉시 반영됩니다.

왜 이런 일이 발생합니까? 기본 값과 달리 객체는 힙에 할당됩니다. 즉, 객체는 컴퓨터 메모리에 상주하며 참조를 통해 액세스됩니다. C를 기록할 때 console.log()는 배열 내용의 복사본이 아닌 배열에 대한 참조를 인쇄합니다. 따라서 참조된 개체에 대한 모든 후속 수정 사항(이 경우 배열 정렬)은 A가 다시 사용되기 전에 콘솔에도 표시됩니다.

이러한 동작을 방지하고 개체의 스냅샷을 로그에 기록하려면 인스턴트 console.log()가 호출되면 다음 트릭을 사용할 수 있습니다.

console.log(JSON.parse(JSON.stringify(C)));
로그인 후 복사

이 기술은 JSON 직렬화를 사용하여 객체의 전체 복사본을 생성하고 역직렬화.

위 내용은 `console.log()`가 JavaScript에서 즉각적인 배열 변경 사항을 표시하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿