Console.log() Google Chrome의 개체 및 배열 불일치
Google Chrome의 디버깅 도구인 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!