2015-04-09 8 views
5

कुछ मिनट पहले, जावास्क्रिप्ट के साथ खेलते समय, मैंने console.log() का एक अजीब व्यवहार देखा। वास्तव में यह "विकृत" चर लॉग इन लगता है।फ़ायरफ़ॉक्स पर console.log() का अजीब व्यवहार 37

var res = document.getElementById("res"); 
 
var arr = ["1", "2", "3"]; 
 
arr.push("4"); 
 
res.innerHTML = JSON.stringify(arr)+'<br>'; 
 
console.log(arr); 
 
arr.push("5"); 
 
res.innerHTML += JSON.stringify(arr); 
 
console.log(arr);
<div id="res"></div>

यह #res में लेकिन ब्राउज़र कंसोल में नहीं सही चर (फ़ायरफ़ॉक्स 37)

प्रिंट

enter image description here

कोई मुझे क्यों यह समझा सकते हैं: निम्न के एक नजर डालें हो जाता?

+0

क्रोम में मेरा ब्राउज़र आउटपुट और कंसोल मैच। – j08691

+0

मुझे समझ में नहीं आता कि क्यों मेरा प्रश्न डुप्लिकेट के रूप में चिह्नित किया गया है जबकि यह क्रोम के बजाय फ़ायरफ़ॉक्स को संदर्भित करता है .. – DrKey

+1

यह वही मूल मुद्दा है, इसलिए मैं डुप्लिकेट निर्णय देख सकता हूं। – JasonMArcher

उत्तर

2

तो, अगर आप अपने प्रवेश बदलें ताकि आपको सरणी की एक प्रति ले जा रहे हैं:

var arr = ["1", "2", "3"]; 
 
arr.push("4"); 
 
console.log(arr.slice()); 
 
arr.push("5"); 
 
console.log(arr.slice());

सब कुछ उम्मीद के रूप में काम करता है।

मैं छूट कर रहा हूँ "लाइव", एक संभावना के रूप ट्रैकिंग क्योंकि निम्न उदाहरण लाइव ट्रैकिंग का कोई सबूत प्रदर्शित नहीं करता है:

var arr = ["1", "2", "3"]; 
 
console.log(arr); 
 
var i; 
 
i = setInterval(function(){ 
 
    arr.push(1); 
 
    console.log(arr); 
 
    if(arr.length>10)clearInterval(i) 
 
},1000);

इसका मतलब है कि प्रवेश कतार में है और कतार सरणी के आखिरी धक्का के बाद तक नहीं चलती है (संभवतः जब तक आपकी जावास्क्रिप्ट निष्पादित नहीं हो जाती)।

अच्छा लगता है ... निश्चित रूप से ऐसा कुछ जो डेवलपर्स को पकड़ सकता है।

+0

हां, मैंने क्रोम में कुछ समय पहले इसी तरह के व्यवहार को देखा है, मुझे यकीन नहीं है कि लॉगिंग कैसे काम करती है लेकिन यह घटना आधारित हो सकती है। इस मामले में, कहीं किसी प्रकार की दौड़ की स्थिति हो सकती है। –

संबंधित मुद्दे