질문:
JavaScript 코드 조각에서 배열이 정의되고 콘솔에 인쇄됩니다. 배열의 요소를 수정한 후 다시 인쇄됩니다. Firefox의 콘솔은 두 가지 올바른 값을 모두 표시하지만 Chrome의 콘솔은 개체를 느리게 평가하고 두 인스턴스 모두에 대해 수정된 값을 인쇄합니다.
코드에 오류가 있습니까, 아니면 Chrome 콘솔 동작입니까?
답변:
WebKit 버그 보고서(현재 수정됨)에서 지적한 대로 문제가 있습니다. Chrome의 콘솔 개체 평가에 관한 것입니다.
설명 및 회피:
이 동작은 개체에 대한 Chrome 콘솔의 지연 평가 특성에서 비롯됩니다. 콘솔에 표시될 때만 평가하므로 표시 전에 개체가 수정되면 잘못된 출력이 발생합니다.
이 문제를 방지하려면 개체에 대해 .toString()을 호출하면 됩니다. 후속 코드 변경으로 인해 변경되지 않는 표현입니다. 콘솔에 인쇄하기 전에 .toString()을 호출하면 올바른 값이 표시됩니다.
수정된 코드:
var s = ["hi"]; console.log(s.toString()); // Prints "hi" s[0] = "bye"; console.log(s.toString()); // Prints "bye"
이 수정된 접근 방식을 사용하면 콘솔 출력이 Chrome의 경우 Firefox의 경우와 동일하며 배열에 대한 올바른 값을 모두 표시합니다.
위 내용은 Chrome의 JavaScript 콘솔에 원래 값 대신 수정된 개체 값이 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!