संपादित करें ऐसा लगता है कि यह मेरे हिस्से और jsfiddle के उपयोग पर एक मुद्दा था:?जावास्क्रिप्ट hoisting को पूरी तरह से समझने की कोशिश कर रहे हैं
मैं हाल ही में होस्टिंग पर कुछ लेख पढ़ रहा हूं, एक by Nicholas Zakas है, और दूसरा by Ben Cherry है।
इम उदाहरण का पालन करने और सिर्फ अपने दम पर परीक्षण सुनिश्चित करने के लिए मैं पूरी तरह से यह समझ लेकिन मैं इस उदाहरण के साथ मुख्य रूप से कोई समस्या हो रही कोशिश कर रहा,
if (!('a' in window)) {
var a = 1;
}
console.log(a);
प्रवेश
undefined
अपने प्रवेश
1
के बजाय
। अगर मैं सबकुछ सही ढंग से समझ रहा हूं, a
undefined
होना चाहिए, क्योंकि विंडो स्कोप में शीर्ष पर होने वाले विभिन्न कथन के कारण मौजूद होना चाहिए, इसलिए इसे मान असाइन नहीं किया जाना चाहिए।
लेकिन निम्नलिखित अपेक्षा के अनुरूप काम कर रहा है,
(function bar(){
console.log(foo);
var foo = 10;
console.log(baz);
})();
foo
undefined
है, और baz
परिभाषित नहीं है। मेरे पास दोनों उदाहरणों के साथ fiddle है। वास्तव में बस इसके चारों ओर अपने सिर लपेटने की कोशिश कर रहा है। क्या कुछ लेख बदल गए हैं क्योंकि ये लेख शायद लिखे गए थे? यदि कोई इस पर कुछ प्रकाश डाल सकता है तो इसकी सराहना की जाएगी। परीक्षण करते समय क्रोम 14 का उपयोग कर रहा हूँ।
मैं गूगल क्रोम में अपने बेला चल रहा हूँ और यह 'undefined' प्रिंट करता है। Hoisting की एक अच्छी व्याख्या के लिए आप * O'Reilly जावास्क्रिप्ट पैटर्न * पर एक नज़र डाल सकते हैं। एक समर्पित ** पैराग्राफ ** है। – user278064
हाँ, स्पष्ट रूप से यह मेरे कारण jsfiddle सही ढंग से doh का उपयोग नहीं कर रहा था। – Loktar