[1]경고()
[1.1] 차단 효과가 있습니다. 확인을 클릭하지 않으면 후속 코드를 계속 실행할 수 없습니다.
[1.2] 경고()는 문자열만 출력할 수 있습니다. 경고 출력이 객체인 경우 toString() 메서드가 자동으로 호출됩니다.
예: 경고([1,2,3]);//'1,2,3'
[1.3] 경고는 여러 매개변수 쓰기를 지원하지 않으며 첫 번째 값만 출력할 수 있습니다
예: 경고(1,2,3);//1
[2]console.log()
[2.1] 인쇄소에서 출력
[2.2] 모든 종류의 데이터를 인쇄할 수 있습니다
예: console.log([1,2,3]);//[1,2,3]
[2.3] 다중 매개변수 쓰기 지원
예: console.log(1,2,3)// 1 2 3
alert와 console.log 결과가 다르다고요?
score = [1,2,3]; sortedScore = []; console.log(score); sortedScore = score.sort(sortNumber) console.log(sortedScore); function sortNumber(a, b) { return b - a; }
위 출력:
[3, 2, 1]
[3, 2, 1]
그러나 알림으로 변경:
score = [1,2,3]; sortedScore = []; alert(score); sortedScore = score.sort(sortNumber) alert(sortedScore); function sortNumber(a, b) { return b - a; }
위 출력:
1, 2, 3
3, 2, 1
왜 이런 일이 일어나는 걸까요? 전부는 아닙니다:
1, 2, 3
3, 2, 1
?
일부 조사 결과 크롬 구현에 문제가 있는 것으로 나타났습니다. 출력에 대해 부적절한 최적화를 수행하고 다음과 같은 참조 유형이 발생할 때 "지연" 평가에 해당하는 console.log의 실제 실행을 연기했습니다. 배열과 객체에서 위와 같은 문제가 발생합니다.
https://bugs.webkit.org/show_bug.cgi?id=35801
지난달 개발버전에서 수정된 매우 역사적인 BUG입니다.