2012-03-16 2 views
0

나는 전혀 이해할 수없는 것을 알아 챘다. 나는 자바 스크립트 정말 간단한 일을하고있다 :자바 스크립트 배열 로깅 혼란

var a = [1,2,3]; 

console.log(a.push(4)); 
console.log(a); 
console.log(a.push(5)); 

내가 콘솔 로그 기대 : 4, [1,2,3,4]5 예를 들어 here 설명. 캐치은 실제 콘솔 출력의 모습이다 : 4, [1,2,3,4,5]5

참조 : http://jsfiddle.net/HknMF/

도대체 것은 5 두 번째 로그 출력에 표시한다? 당신이 그것을하고 개체를 검사 할 때, 일부 브라우저에서 콘솔 배열/개체에 대한 참조를 사용 http://i.imgur.com/fwAK3.png

+1

정말인가요? jsfiddle에서 코드를 실행 해 보았는데 콘솔 출력이 예상대로 ... Firefox 10.0.2입니다. 어떤 브라우저를 사용하고 있습니까? – Hery

+0

@Hery yes 확실 해요, Chrome & Firefox (Firebug 사용)에서 시도했습니다. 어떤 종류의 콘솔을 사용하고 있습니까? 방화범 도요? – m90

+0

예, 방화 광 1.9.1 – Hery

답변

4

:

편집 : 여기 FWIW는 모두 행동을 보여주는 방화범의 스크린 샷입니다 console.log() 호출 후에 변경된 개체가 표시됩니다.

이도하지 인라인 어쨌든 표시됩니다 배열에 대한 개체를 발생하지만, 파이어 폭스에서

:

>>> var a = [1,2,3]; console.log(a.push(4)); console.log(a); console.log(a.push(5)); 
4 
[1, 2, 3, 4] 
5 

을 특히 당신이있는 경우 중 하나를 복제 ($.extend({}, yourObject) 로그되는 기능을 빠른 해결 방법을 포함하지 않는 개체에 대한 jQuery) 또는 JSON 문자열 버전을 로깅합니다 (멋진 객체보기를 잃어 버리고 단순한 문자열을 얻을 수 있습니다). 배열은 쉽게 복제 할 수 있습니다 (얕은 복사!) a.slice(0)

+0

어떤 브라우저를 사용합니까? – GoldenNewby

+0

많이 설명해 주므로 Array의 현재 상태를 기록하는 방법이 있습니까? – m90

+1

'JSON.stringify()'또는 그것을 복제 ('a.slice (0)') – ThiefMaster

1

라이브 배열 (Chrome) 또는 문자열 표현 (Firefox)이 브라우저에 따라 달라집니다.

이를 방지하려면 얕은 복사본이면 충분합니다. 용도 :

console.log(a.slice(0));