객체 및 배열에 대해 console.log()에 무엇이 기록됩니까?
3908 단어 webdevjavascript
console.log(myObject)
를 사용하고 콘솔에 인쇄된 내용을 확장한 후 얻은 결과로 인해 혼란스러워한 적이 있습니까?예를 들어:
const myObject = {
firstName: "Elad",
lastName: "Tzemach",
favoriteFood: "cake"
};
console.log(myObject);
// lots of other code
myObject.favoriteFood = "broccoli";
콘솔에서 다음을 제공합니다.
예이! 😍 나는 케이크를 좋아한다! 🍰 🍰 🍰
이것을 확장해 보겠습니다.
뭐?? 😳
"broccoli"
?? 무슨 일이에요??작은 파란색 아이콘 "i"아이콘이 보이시나요?
마우스를 가져가면 "아래 값은 지금 평가되었습니다."라는 도구 설명이 표시됩니다.
console.log()로 평가
console.log()
를 사용하여 객체(또는 배열)를 평가하는 것은 비동기 방식으로 수행됩니다. 객체 자체에 대한 참조는 동기식으로 console
에 전달되며, 확장하기 전에 처음에 favoriteFood: "cake"
가 있는 객체를 보는 이유입니다. 이것이 우리가 콘솔에 기록했을 때 개체의 "모양"입니다.그러나 개체가 나중에 수정된 다음 콘솔에서 확장된 경우 현재와 동일한 것으로 평가되므로(앱 코드 실행이 완료된 후) 표시되는 데이터에 업데이트된 값이 있습니다.
무엇을 할 수 있습니까?
혼란을 피하기 위해 한 가지 접근 방식은 다음을 사용하는 것입니다.
console.log("users", JSON.stringify(users, null, 2));
그런 다음 기본적으로 확장된
console.log()
를 호출한 시점에 개체를 가져옵니다. (축소할 수는 없지만)또 다른 방법은 단순히 개체를 완전히 복제한 다음 기록하는 것입니다.
console.log({...myObject});
(중첩된 개체가 없는 경우 스프레드 연산자로 쉽게 수행할 수 있습니다. 중첩된 경우
Lodash
또는 ImmutableJS
와 같은 타사 라이브러리를 사용해야 합니다.)결론
console.log()
가 개체 및 배열과 함께 작동하는 방식을 이해하면 확실히 좌절감을 덜 수 있습니다!그리고 끝까지 하셨다면 고백할게 있어요 브로콜리도 좋아해요😄
행복한 코딩!! 🚀
Reference
이 문제에 관하여(객체 및 배열에 대해 console.log()에 무엇이 기록됩니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/eladtzemach/what-gets-logged-in-console-log-for-objects-and-arrays-m80텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)