>  기사  >  웹 프론트엔드  >  Chrome, Firefox 및 Safari에서 콘솔 로그에 다른 값이 표시되는 이유는 무엇입니까?

Chrome, Firefox 및 Safari에서 콘솔 로그에 다른 값이 표시되는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-25 14:21:45948검색

Why Do Console Logs Show Different Values in Chrome, Firefox, and Safari?

Chrome, Firefox 및 Safari의 콘솔 개체 값 차이

JavaScript에서 개체는 참조로 저장됩니다. 즉, console.log가 호출됩니다. 객체 인수를 사용하면 객체 참조를 기록합니다. 이로 인해 콘솔에서 개체를 볼 때 놀라운 동작이 발생할 수 있습니다.

Firefox의 Firebug에서 개체를 로깅하면 일관되게 올바른 값이 표시됩니다.

Object { bar=1111 }
1111

Object { bar=2222 }
2222

그러나 Chrome 및 Safari의 콘솔에서는 다른 동작이 관찰됩니다.

Object { bar=2222 }                      // Object shows updated value
1111                                      // Attribute value remains unchanged

Object { bar=2222 }                      // Object shows updated value
2222                                      // Attribute value is correct

이러한 불일치는 첫 번째 console.log 호출 후 객체를 캐시하기 위한 Chrome(및 WebKit을 사용하는 Safari)의 설계 결정에서 비롯됩니다. 캐시된 값은 그 동안 객체가 업데이트되더라도 모든 후속 console.log 호출에 사용됩니다.

이러한 혼란을 피하려면 다음과 같이 객체 값을 기록하기 위해 객체가 아닌 메서드를 사용하는 것이 좋습니다.

console.log(JSON.stringify(foo));      // Serializes the object into a JSON string

또는 유사한 기능을 제공하는 Chrome의 toJSON 및 valueOf 메소드를 사용할 수 있습니다.

console.log(foo.toJSON());                // Invokes the object's `toJSON` method (if defined)
console.log(foo.valueOf());               // Invokes the object's `valueOf` method (if defined)

이러한 기술을 사용하면 콘솔에 표시되는 값이 물체의 실제 상태와 일치합니다.

위 내용은 Chrome, Firefox 및 Safari에서 콘솔 로그에 다른 값이 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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