x = 1;
alert(x);
var y = function() {
alert(x);
var x = 2;
alert(x);
}
y();
3 अलर्ट का परिणाम है: 1
, undefined
, 2
(क्रोम 25)स्थानीय घोषणा से पहले मेरा वैश्विक चर क्यों छायांकित है?
मेरा प्रश्न है: क्यों दूसरे अलर्ट अपरिभाषित है? क्यों नहीं 1? क्या कोई वैश्विक परिवर्तनीय एक्स नहीं है? कारण hoisting को
क्योंकि आप अपने फ़ंक्शन में 'x' छाया करते हैं। तो एक फ़ंक्शन-स्कोप्ड वेरिएबल 'x' है, जिसे अभी तक एक मान असाइन नहीं किया गया है, इसलिए आप अपरिभाषित हो जाते हैं। यही कारण है कि फ़ंक्शन की शुरुआत में अपने चर घोषित करने की हमेशा अनुशंसा की जाती है, क्योंकि यह आपके लिए भी किया जाएगा। खुद को भ्रमित न करने का प्रयास करें। – Chad