>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 `console.log()`가 예기치 않은 배열 동작을 표시하는 이유는 무엇입니까?

JavaScript에서 `console.log()`가 예기치 않은 배열 동작을 표시하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-14 05:23:10271검색

Why Does `console.log()` Show Unexpected Array Behavior in JavaScript?

배열이 포함된 console.log()의 예기치 않은 동작

JavaScript에서 배열을 검사할 때 console.log() 함수가 예기치 않게 동작합니다. 이 동작은 console.log()에 값의 복사본이 아닌 배열에 대한 참조가 전달된다는 사실에서 비롯됩니다.

예:

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

배열 A를 정렬할 때 C의 값은 변경되지 않을 것으로 예상합니다. 그러나 이는 사실이 아니다. C의 값도 정렬된 배열 [1, 2]로 변경됩니다.

왜 이런 일이 발생하나요?

console.log()에 참조가 전달되기 때문입니다. 배열에 대한 모든 변경 사항은 C가 보유한 참조에도 반영됩니다. 따라서 A가 정렬되면 C의 출력도 변경합니다.

이 동작을 방지하는 방법:

예기치 않은 동작을 방지하려면 다음 해결 방법을 사용할 수 있습니다.

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

이렇게 하면 JSON.stringify()를 사용하여 배열 C를 문자열로 변환한 다음 JSON.parse()를 사용하여 다시 배열로 변환합니다. 이렇게 하면 어레이의 전체 복사본이 효과적으로 생성되어 원래 어레이에 대한 모든 변경 사항이 복사본에 반영되지 않도록 합니다.

브라우저 경고:

다음이 중요합니다. MDN(Mozilla 개발자 네트워크)에서는 최신 버전의 Chrome 및 Firefox에서 이러한 동작에 대해 경고합니다.

"로그인할 경우 주의하세요. Chrome 및 Firefox 최신 버전의 개체 콘솔에 기록되는 것은 개체에 대한 참조입니다. 이는 console.log()를 호출하는 순간 개체의 '값'일 필요는 없지만 콘솔을 연 순간의 객체의 값입니다."

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

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