2015-12-14 3 views
17

शायद मुझे कुछ स्पष्ट याद आ रहा है, लेकिन मैं जावास्क्रिप्ट सीख रहा हूं और क्रोम कंसोल में बहुत सारे परीक्षण कर रहा हूं। यहां तक ​​कि अगर मैं अन्य धागे (localStorage.clear()) में देखे गए कई आदेशों को साफ़ या उपयोग करता हूं, भले ही मैंने जो भी असाइन किया था या चर दिया गया है, वह अभी भी दिखाई देता है।क्रोम कंसोल स्पष्ट असाइनमेंट और चर

उदाहरण के लिए, मैं var name = "बॉब" जैसा कुछ करता हूं;

enter image description here

मैं स्पष्ट और कंसोल बंद .. इसे फिर से खोलने .. नाम के मूल्य के लिए लग रही है .. और यह अभी भी बॉब है।

enter image description here

मैं इस बाहर खाली करने के लिए जब मैं चाहता हूँ चाहते हैं। सबसे अच्छा तरीका क्या है?

+3

कंसोलिंग, क्लोजिंग और कंसोल खोलने से पेज संदर्भ को फिर से परिभाषित नहीं किया जाएगा। आपको पृष्ठ – madox2

+0

रीफ्रेश करना होगा ["' clear() ': कंसोल आउटपुट क्षेत्र साफ़ करता है।"] (https://developer.mozilla.org/en-US/docs/Tools/Web_Console/The_command_line_interpreter) – epascarello

+1

बस F5 पर क्लिक करें पृष्ठ ताज़ा करें। [और वैश्विक 'नाम' चर का उपयोग न करें] (https://stackoverflow.com/q/10523701/1048572)। – Bergi

उत्तर

15

डेवलपर कंसोल के भीतर किसी भी चर या कार्यों को घोषित करते समय आप क्या प्रभावित कर रहे हैं वैश्विक निष्पादन संदर्भ है, जो वेब ब्राउज़र के लिए window है।

जब आप कंसोल आप Chrome कह रहे हैं सब दिखाई इन आपरेशनों का इतिहास निकालने के, वस्तुओं है कि आप window से जुड़ी है स्पष्ट नहीं clear()

ऐसा करने के लिए आप चाहिए मैन्युअल delete इसके संदर्भ द्वारा प्रत्येक वस्तु:

delete name; 
name //=> undefined 

तो बार-बार delete के माध्यम से कई वस्तुओं को हटाने के लिए होने की भूमि के ऊपर बहुत ज्यादा है, किसी वस्तु की संपत्ति के रूप में प्रत्येक मूल्य की दुकान, जैसे data, है कि आप एक बयान में सभी गुण के साथ नष्ट कर सकते हैं: आपको लगता है कि चर निकालना चाहते हैं

var data = {}; 
data.name = 'Bob'; 
data.age = 60; 
delete data; 
data.name //=> ReferenceError: data is not defined 
data.age //=> ReferenceError: data is not defined 
+1

पृष्ठ को पुनः लोड करने से यह मेरे लिए साफ़ नहीं होता है। नाम हटाएं; हालांकि काम करता है। मैं व्यक्तिगत कार्य को हटाने के बिना पूरी तरह से डेक को साफ़ करने का एक तरीका चाहता हूं। मुझे यकीन नहीं है कि ताज़ा क्यों काम नहीं करता है। यह एक लोकप्रिय जवाब प्रतीत होता है। – spex5

+0

आप सही हैं कि ताज़ा काम नहीं करता है - मैंने कभी उस व्यवहार को कभी नहीं देखा होगा। आप ऑब्जेक्ट में सभी डेटा संलग्न कर सकते हैं, उदा। 'डेटा = {}; data.name = 'बॉब'; '। कम से कम आपको केवल 'डेटा हटाएं' करना होगा; – sdgluck

+0

क्रोम का कंसोल बहुत असंगत प्रतीत होता है। यदि मैं ताज़ा करने के लिए रिक्त पृष्ठ का उपयोग कर रहा हूं, तो यह चर को साफ़ करता है .. लेकिन कभी-कभी नहीं। हमेशा काम करना प्रतीत होता है ब्राउज़र बंद करना और फिर से खोलना। ओह अच्छा। अभी के लिए काफी अच्छा है। – spex5

4

कंसोल साफ़ करना स्मृति से चर को साफ़ नहीं करता है बल्कि यह उपयोगकर्ता इंटरफ़ेस से डेटा को साफ़ करता है।

पृष्ठ को पुनः लोड करने से कंसोल डेटा साफ़ हो जाता है। मुझे उम्मीद है कि यह ठीक होना चाहिए जैसा कि आपने बताया है कि आप सिर्फ जावास्क्रिप्ट का परीक्षण और सीख रहे हैं।

आशा है कि मदद करता है!

7

इस समस्या का एक सरल उपाय किसी भी कोड रैप करने के लिए है, जिसे आप एक त्वरित आवंटित समारोह अभिव्यक्ति (आईआईएफई) में वैश्विक दायरे में नहीं चाहते हैं।IIFEs पर

(function() { 

    // Put your code here... 

})(); 

अधिक जानकारी के लिए:: सभी चर समारोह के दायरे में सौंपा पुनः आवंटित की जाती हैं, जब समारोह समाप्त हो जाती है https://en.wikipedia.org/wiki/Immediately-invoked_function_expression

[अपडेट]

ES6 में आप ब्लॉकों का उपयोग कर सकते हैं (ताकि जब तक आप var की let बजाय) का उपयोग के रूप में:

{ 

    // Put your code here... 

} 

के लिए ब्लॉक पर अधिक जानकारी: http://exploringjs.com/es6/ch_core-features.html#sec_from-iifes-to-blocks

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