0
다음 예를 살펴 이상한 행동 : 정말 완전히 출력 # 1 CONSOLE.LOG 당황하고JQuery와 이연 & CONSOLE.LOG -
var $_dfd = $.Deferred(),
$_x = {};
$_x = {
a: 1,
b: 2
};
console.log($_x); // Gives {a: 1, b: 2, more: {c: 3, d: 4}} <== Weirdness here
console.log($_x.a); // Gives 1
console.log($_x.more); // Gives undefined
$_dfd.pipe(function($_x) {
$_x.more = {
c: 3,
d: 4
};
return $_x;
});
$_dfd.resolve($_x).done(function($_x) {
console.log($_x); // Gives {a: 1, b: 2, more: {c: 3, d: 4}}
});
. 대답해야 할 두 가지 질문이 있습니다
첫 CONSOLE.LOG 출력에서 변수$_x
의 실제 상태 무엇
?
console.log가 지연된 상태로 작업 할 때 변수 상태를 이해하는 안전한 방법이 아닌 경우 다른 더 좋은 대안은 무엇입니까?
고마워요!
확실하지,하지만 포인트는 즉시 던질 때 빈 객체에'$ _x'를 초기화하는 없습니다 거기에 있습니다 멀리 떨어져 두 번째 대상과 동일하게 지정하십시오. – nnnnnn
P. 한 가지 해결 방법은 다음과 같이 동작하는'console.log()'에 대한 것입니다 : http://stackoverflow.com/q/11118758/615754 - 한 가지 해결 방법은 객체를 기록하기 전에 복제하는 것입니다 :'console.log (JSON.stringify ($ _ x))); – nnnnnn
@nnnnnn 당신이 디버깅하고 단계를 넘기면 올바른 출력을 생성합니다. 복제 트릭을 작품 사용뿐만 아니라 http://jsfiddle.net/2tfTr/ –