मैं जावास्क्रिप्ट या क्रोम कंसोल के व्यवहार से गहराई से उलझन में हूं। क्या कोई मुझे समझने में मदद कर सकता है?जावास्क्रिप्ट कंसोल को निर्दिष्ट किए जाने से पहले वैरिएबल का असाइन मान मुद्रित करता है?
असल में मैं निम्नलिखित जावास्क्रिप्ट कोड, किसी भी समारोह या अन्य दायरे के अंदर नेस्टेड नहीं किया है:
var initial_array = [];
function initialiseArray() {
initial_array = [2, 9, 8, 6, 0, 2, 1];
}
function copyToNewArray() {
var copied_array = [];
console.log("COPIED 1", copied_array);
for (var i = 0; i < initial_array.length; i++) {
var copy = initial_array[i];
copied_array.push(copy);
}
console.log("COPIED 2", copied_array);
}
initialiseArray();
copyToNewArray();
मैं COPIED 1
उम्मीद करेंगे []
मुद्रित करने के लिए - चर के रूप में अभी तक असाइन नहीं की गई है - लेकिन इसके बजाय यह प्रिंट [2, 9, 8, 6, 0, 2, 1]
- यानी इसके बाद मूल्य असाइन किया गया है।
क्यों?
संयोग से, यदि आप initial_array = copied_array
के साथ लाइन 8-11 को प्रतिस्थापित करते हैं, तो RESULTS 1
वास्तव में []
के रूप में प्रिंट करता है। क्या .push
का उपयोग करने के साथ कुछ करना है?
दिलचस्प। क्या यह एक ही मुद्दे को संबोधित करता है? [लिंक] (http://zef.me/2843/javascript-the-scope-pitfall) – j08691
समान प्रश्न: http://stackoverflow.com/questions/4057440/is-chromes-javascript-console-lazy-about- मूल्यांकन-एरे – diEcho