>웹 프론트엔드 >JS 튜토리얼 >Chrome에서 Console.log()가 원래 값 대신 수정된 값을 표시하는 이유는 무엇입니까?

Chrome에서 Console.log()가 원래 값 대신 수정된 값을 표시하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-20 12:34:02386검색

Why Does Console.log() Display Modified Values Instead of Original Values in Chrome?

객체 및 배열을 로깅할 때 Chrome에서 Console.log() 불일치

Google Chrome에서 console.log()를 사용할 때 예기치 않은 동작이 발생합니다. ) 중첩된 배열이나 객체를 기록합니다. 로깅 후 배열이나 객체의 가장 안쪽 값을 수정하면 console.log()는 로깅 당시의 원래 값이 아닌 수정된 값을 표시합니다.

재현 단계

문제를 재현하려면:

  1. 중첩 배열을 만듭니다(예: [[345, "test"]]).
  2. 어레이를 콘솔에 기록합니다. console.log()를 사용하여.
  3. 내부 배열 값을 수정합니다(예: test0 = 1111111).
  4. Console.log()는 이제 [[1111111, "test"]]를 출력합니다.

이러한 불일치는 변수(testb, testc)에 저장된 개체 및 배열에도 영향을 미칩니다.

기본 문제

광범위한 조사 끝에 이 문제는 이전에 WebKit(https://bugs.webkit.org/show_bug.cgi?id=35801)에서 버그로 보고되었음을 발견했습니다. Chromium 개발자들은 이 문제를 인정했지만 기술적 한계로 인해 수정이 불가능하다고 밝혔습니다.

수정 및 불일치

그러나 2012년 WebKit에 수정이 구현되었습니다. 그럼에도 불구하고 Google Chrome은 아직 수정 사항을 채택하지 않았습니다. 결과적으로 console.log() 동작은 로깅 시 콘솔 창이 열려 있는지 여부에 따라 달라집니다.

  • 콘솔 창 열기: Console.log()는 변경된 값이라도 현재 값을 표시합니다.
  • 처음에 콘솔 창이 닫혔을 때: Console.log()는 로깅 당시의 값을 표시합니다.

결론

Google Chrome의 console.log() 기능에 있는 이 버그는 지속되며 디버깅 노력에 영향을 미칩니다. 이러한 불일치를 인식하고 Chrome에서 문제가 해결될 때까지 대체 디버깅 방법을 고려하는 것이 좋습니다.

위 내용은 Chrome에서 Console.log()가 원래 값 대신 수정된 값을 표시하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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