संभव डुप्लिकेट:
Is Chrome's JavaScript console lazy about evaluating arrays?console.log में बग?
मैं निम्नलिखित कोड का प्रयास करें:
var myList = new Object();
var item = new Object();
item.text = "item-1";
myList[3] = item;
console.log(myList);
console.log(myList[3].text);
// Assign another object to the same entry
var item2 = new Object();
item2.text = "item-2";
myList[3] = item2;
console.log(myList);
console.log(myList[3].text);
परिणाम काफी अजीब है:
* Object
* 3: Object
text: "item-2"
item-1
* Object
* 3: Object
text: "item-2"
item-2
, लेकिन - अगर मैं कुछ समय (setTimeout का प्रयोग करके) के बाद दूसरे भाग पर अमल, और पहली वस्तु उधेड़ना, मैं उसे सही करना, अर्थात्:
* Object
* 3: Object
text: "item-1"
item-1
* Object
* 3: Object
text: "item-2"
item-2
मैं यह महत्वपूर्ण साझा करने के लिए मिल जाए, के बाद से मुझे लगता है कि एक कर सकते हैं अपने कोड में क्या गलत है यह समझने की कोशिश कर रहे बहुत समय बर्बाद करें। और यदि किसी के पास खुली बग या कुछ का कुछ संदर्भ है - तो कृपया इस टिकट का उत्तर दें। धन्यवाद!
क्रोम का कौन सा संस्करण उपयोग कर रहे हैं? किस मंच पर? मैंने अपने कंसोल में अपना कोड चलाने की कोशिश की और मुझे सही/तार्किक उत्तर मिला –
आपने इसे 'सेटटाइमआउट' के साथ बिल्कुल कैसे कहा? मैंने इसे भी आजमाया और अपेक्षित परिणाम प्राप्त किए। – jsalonen
यह एक बग नहीं है, यह एक सुविधा है! Console.log लॉग ऑब्जेक्ट का संदर्भ रखता है, ताकि आप रनटाइम में ऑब्जेक्ट का पूर्वावलोकन कर सकें। यदि आपने ऑब्जेक्ट की विशेषता को बदल दिया है, स्वाभाविक रूप से यह परिवर्तन इस वास्तविक समय पूर्वावलोकन में भी प्रदर्शित होता है। आप ऑब्जेक्ट ब्राउज़ करने का प्रयास कर सकते हैं, यह देखने के लिए कि इसका "पदानुक्रम" असीम रूप से गहरा है, इसलिए इसे कैश करना असंभव है। – Kasztan