>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 `console.log()`가 수정되기 전에 변경된 배열 값을 표시하는 것처럼 보이는 이유는 무엇입니까?

JavaScript에서 `console.log()`가 수정되기 전에 변경된 배열 값을 표시하는 것처럼 보이는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-05 07:09:39806검색

Why Does `console.log()` Seem to Show Altered Array Values Before Modification in JavaScript?

콘솔은 수정 전 변경된 배열 값을 출력합니다

JavaScript에서 변수는 일반적으로 참조로 전달됩니다. 즉, 이후의 변수에 대한 변경 사항이 적용됩니다. 다른 변수에 할당되면 두 변수 모두에 반영됩니다. 이 동작은 console.log()를 사용하여 변수 값을 표시할 때 자주 관찰됩니다.

예를 들어 다음 코드를 고려하세요.

let A = [2, 1];
let C = A;
console.log(C); // [1, 2]

이 예에서 변수 C 변수 A에 저장된 배열에 대한 참조가 할당됩니다. console.log(C)가 실행되면 배열의 현재 값인 [1, 2]가 출력됩니다. 그러나 원래 배열 A가 나중에 수정되면 이 값이 최신이 아닐 수 있습니다.

A.sort();
console.log(C); // [1, 2]

배열 A에서 sort() 메서드를 실행하면 해당 요소가 제자리에서 정렬됩니다. 배열 C는 동일한 객체에 대한 참조를 보유하므로 console.log(C)의 출력은 [1, 2]로 유지됩니다. 이는 console.log()가 실행 시 정적 값이 아닌 객체의 현재 값을 표시하기 때문입니다.

이러한 예상치 못한 동작을 방지하고 console.log()가 정확한 값을 출력하도록 하려면 다음 중 하나를 사용할 수 있습니다:

console.log(JSON.parse(JSON.stringify(C)));

또는 MDN에서 제안하는 대로:

Object.assign({}, A)

위 내용은 JavaScript에서 `console.log()`가 수정되기 전에 변경된 배열 값을 표시하는 것처럼 보이는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.