>웹 프론트엔드 >JS 튜토리얼 >Chrome의 JavaScript 콘솔에 원래 값 대신 수정된 개체 값이 표시되는 이유는 무엇입니까?

Chrome의 JavaScript 콘솔에 원래 값 대신 수정된 개체 값이 표시되는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-24 03:20:18331검색

Why Does Chrome's JavaScript Console Show Modified Object Values Instead of Original Values?

객체에 대한 Chrome의 JavaScript 콘솔 평가 동작

질문:

JavaScript 코드 조각에서 배열이 정의되고 콘솔에 인쇄됩니다. 배열의 요소를 수정한 후 다시 인쇄됩니다. Firefox의 콘솔은 두 가지 올바른 값을 모두 표시하지만 Chrome의 콘솔은 개체를 느리게 평가하고 두 인스턴스 모두에 대해 수정된 값을 인쇄합니다.

코드에 오류가 있습니까, 아니면 Chrome 콘솔 동작입니까?

답변:

WebKit 버그 보고서(현재 수정됨)에서 지적한 대로 문제가 있습니다. Chrome의 콘솔 개체 평가에 관한 것입니다.

설명 및 회피:

이 동작은 개체에 대한 Chrome 콘솔의 지연 평가 특성에서 비롯됩니다. 콘솔에 표시될 때만 평가하므로 표시 전에 개체가 수정되면 잘못된 출력이 발생합니다.

이 문제를 방지하려면 개체에 대해 .toString()을 호출하면 됩니다. 후속 코드 변경으로 인해 변경되지 않는 표현입니다. 콘솔에 인쇄하기 전에 .toString()을 호출하면 올바른 값이 표시됩니다.

수정된 코드:

var s = ["hi"];
console.log(s.toString()); // Prints "hi"
s[0] = "bye";
console.log(s.toString()); // Prints "bye"

이 수정된 접근 방식을 사용하면 콘솔 출력이 Chrome의 경우 Firefox의 경우와 동일하며 배열에 대한 올바른 값을 모두 표시합니다.

위 내용은 Chrome의 JavaScript 콘솔에 원래 값 대신 수정된 개체 값이 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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