>  기사  >  웹 프론트엔드  >  Console.log()가 Google Chrome에서 객체와 배열을 올바르게 출력합니까?

Console.log()가 Google Chrome에서 객체와 배열을 올바르게 출력합니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-20 12:30:02542검색

Does Console.log() Correctly Output Objects and Arrays in Google Chrome?

Console.log() Google Chrome의 개체 및 배열 불일치

Google Chrome의 디버깅 도구인 Console.log(), 객체 및 배열과 함께 사용할 때 독특한 동작을 나타냅니다. 이 예외 현상은 다음과 같은 경우에 나타납니다.

  1. 중첩 배열이 생성되는 경우(예: [[345,"test"]]).
  2. 배열이 콘솔에 기록됩니다.
  3. 내부 배열 값이 수정되고 이후에 console.log()는 실행 당시의 배열 값이 아닌 수정된 값을 표시합니다.
<code class="javascript">var test = [[2345235345,"test"]]
console.log(test);
test[0][0] = 1111111;
// outputs: [[1111111,"test"]]

var testb = {};
testb.test = "test";
console.log(testb);
testb.test = "sdfgsdfg";
// outputs: {"testb":"test"}

var testc = ["test","test2"];
console.log(testc);
testc[0] = "sdxfsdf";
// outputs: ["test","test2"]</code>

흥미롭게도 이 동작은 Chrome에만 적용됩니다. Firefox는 이를 표시하지 않습니다. 또한 Chrome 디버거에서 코드가 한 줄씩 실행되면 console.log()가 올바른 값을 표시합니다.

현상의 근원

추가 조사에 따르면 이는 Webkit에서 해결되었지만 아직 Google Chrome에 통합되지 않은 알려진 버그인 것으로 나타났습니다. 이 버그는 2010년 3월에 처음 보고되었으며(https://bugs.webkit.org/show_bug.cgi?id=35801), 2012년 8월에 수정 사항이 구현되었습니다. 그러나 아직 Chrome에는 적용되지 않았습니다.

콘솔 상태 영향

console.log()의 동작은 콘솔 창 상태에 영향을 받습니다. 스크립트가 로드될 때 콘솔 창이 열려 있으면 console.log()는 배열과 객체의 현재 값을 표시합니다. 그러나 스크립트가 로드된 후 콘솔 창을 닫았다가 열면 console.log() 실행 후 변경된 값이라도 console.log()에 수정된 값이 표시됩니다.

<code class="javascript">var greetings=['hi','bye'];
console.log(greetings);
setTimeout(function(){
    greetings.push('goodbye');
},3000);</code>

위 스크립트는 콘솔 창이 이미 열려 있는 상태에서 실행되며, console.log()에는 두 개의 항목이 표시됩니다. 페이지가 로드된 후 콘솔 창이 닫혔다가 다시 열리면 console.log()는 배열의 수정된 상태를 반영하는 세 가지 항목을 표시합니다.

이러한 특징은 Google Chrome의 console.log() 기능에 잠재적인 버그가 있음을 나타냅니다. , 현재 Chrome 버전에서는 수정되지 않은 상태로 남아 있습니다.

위 내용은 Console.log()가 Google Chrome에서 객체와 배열을 올바르게 출력합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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