객체와 console.log의 복잡한 동작
console.log() 함수를 활용하여 객체를 검사할 때 특이한 현상이 발생할 수 있습니다. 결과. 예를 들어, 객체 배열을 기록한 다음 splice()를 사용하여 수정하면 콘솔에 여전히 원래 배열이 표시되는 것을 볼 수 있습니다.
이런 일이 발생하는 이유
Console.log는 객체를 비동기적으로 검사합니다. 콘솔은 객체에 대한 참조를 동기적으로 검색하지만 객체를 확장할 때까지 해당 속성 표시를 연기합니다(이 동작은 브라우저에 따라 다릅니다). 따라서 검사 전에 개체가 변경되면 표시된 데이터에 업데이트된 값이 포함됩니다.
불일치 식별
Chrome은 이를 경고하는 시각적 신호를 제공합니다. 행동. 개체 위로 마우스를 가져가면 상자에 작은 "i"가 나타나며 다음 메시지를 표시합니다. "왼쪽 개체 값은 기록될 때 스냅샷되었으며, 아래 값은 방금 평가되었습니다."
문제 해결
이러한 불일치를 방지하려면 개별 객체 속성 로깅을 고려하세요. 값:
console.log(obj.foo, obj.bar, obj.baz);
또는 JSON.stringify()를 사용하여 객체를 JSON 문자열로 변환할 수 있습니다.
console.log(JSON.stringify(obj));
또 다른 접근 방식은 객체의 검사 가능성을 다시 유지하는 것입니다. JSON.parse()로 인코딩:
console.log(JSON.parse(JSON.stringify(obj)));
그러나 JSON은 다음과 같은 직렬화할 수 없는 속성을 제거합니다. 함수 및 DOM 요소로. 복잡한 객체의 경우 강력한 전체 복사 메커니즘을 사용하여 이러한 속성을 보존하세요.
위 내용은 수정 후 `console.log()`에 예기치 않은 개체 값이 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!