जेएस ट्यूटोरियल

जेएस होम जे एस परिचय जे एस कहाँ करने के लिए जेएस आउटपुट जेएस स्टेटमेंट्स जेएस सिंटेक्स जे एस टिप्पणियाँ जेएस चर जे एस लेट जेएस कॉन्स्ट जेएस ऑपरेटर्स जे एस अंकगणित जेएस असाइनमेंट जेएस डेटा प्रकार जे एस कार्य जेएस ऑब्जेक्ट्स जेएस इवेंट्स जे एस स्ट्रिंग्स जे एस स्ट्रिंग तरीके जे एस स्ट्रिंग खोज जे एस स्ट्रिंग टेम्पलेट्स जेएस नंबर जेएस संख्या के तरीके जे एस सरणी जेएस सरणी के तरीके जेएस ऐरे सॉर्ट जेएस सरणी पुनरावृत्ति जेएस ऐरे कॉन्स्ट जे एस तिथियाँ जेएस तिथि प्रारूप जेएस तिथि प्राप्त करने के तरीके जे एस दिनांक सेट तरीके जे एस मठ जे एस रैंडम जे एस बूलियन्स जेएस तुलना जे एस शर्तें जे एस स्विच जेएस लूप फॉर In . के लिए JS लूप ओएफ के लिए जेएस लूप जेएस लूप जबकि जेएस ब्रेक जेएस Iterables जेएस सेट जेएस मैप्स जेएस टाइपोफ जे एस प्रकार रूपांतरण जेएस बिटवाइज जेएस रेगएक्सपी जे एस त्रुटियाँ जेएस स्कोप जे एस उत्थापन जेएस सख्त मोड जेएस यह कीवर्ड जेएस एरो फंक्शन जेएस क्लासेस जेएस JSON जेएस डिबगिंग जेएस स्टाइल गाइड जेएस सर्वोत्तम अभ्यास जेएस गलतियाँ जेएस प्रदर्शन जेएस आरक्षित शब्द

जेएस संस्करण

जेएस संस्करण जेएस 2009 (ES5) जेएस 2015 (ईएस6) जेएस 2016 जेएस 2017 जेएस 2018 जेएस आईई / एज जेएस इतिहास

जेएस ऑब्जेक्ट्स

वस्तु परिभाषाएँ वस्तु गुण वस्तु के तरीके वस्तु प्रदर्शन ऑब्जेक्ट एक्सेसर्स वस्तु निर्माता वस्तु प्रोटोटाइप वस्तु पुनरावर्तनीय वस्तु समूह वस्तु मानचित्र वस्तु संदर्भ

जे एस कार्य

फ़ंक्शन परिभाषाएँ फंक्शन पैरामीटर्स समारोह आमंत्रण फंक्शन कॉल समारोह लागू करें फंक्शन क्लोजर

जेएस क्लासेस

कक्षा परिचय वर्ग वंशानुक्रम क्लास स्टेटिक

जे एस एसिंक

जेएस कॉलबैक जे एस अतुल्यकालिक जे एस वादा जे एस एसिंक/प्रतीक्षा

जेएस एचटीएमएल डोम

डोम परिचय डोम तरीके डोम दस्तावेज़ डोम तत्व डोम एचटीएमएल डोम फॉर्म डोम सीएसएस डोम एनिमेशन डोम घटनाक्रम डोम इवेंट श्रोता डोम नेविगेशन डोम नोड्स डोम संग्रह डोम नोड सूचियाँ

जेएस ब्राउज़र बीओएम

जेएस विंडो जेएस स्क्रीन जेएस स्थान जेएस इतिहास जेएस नेविगेटर जेएस पॉपअप अलर्ट जेएस टाइमिंग जे एस कुकीज़

जेएस वेब एपीआई

वेब एपीआई परिचय वेब फॉर्म एपीआई वेब इतिहास एपीआई वेब संग्रहण API वेब वर्कर एपीआई वेब फ़ेच एपीआई वेब जियोलोकेशन एपीआई

जे एस अजाक्स

AJAX परिचय अजाक्स एक्सएमएलएचटीपी अजाक्स अनुरोध अजाक्स प्रतिक्रिया अजाक्स एक्सएमएल फ़ाइल अजाक्स पीएचपी अजाक्स एएसपी AJAX डेटाबेस अजाक्स अनुप्रयोग अजाक्स उदाहरण

जेएस JSON

JSON परिचय JSON सिंटैक्स जेएसओएन बनाम एक्सएमएल JSON डेटा प्रकार JSON पार्स JSON स्ट्रिंगिफ़ाई JSON ऑब्जेक्ट्स JSON सरणियाँ JSON सर्वर जेएसओएन पीएचपी जेएसओएन एचटीएमएल जेएसओएन जेएसओएनपी

जेएस बनाम jQuery

jQuery चयनकर्ता jQuery एचटीएमएल jQuery सीएसएस jQuery डोम

जेएस ग्राफिक्स

जेएस ग्राफिक्स जेएस कैनवास जे एस प्लॉटली जेएस चार्ट.जेएस जेएस गूगल चार्ट जेएस डी3.जेएस

जेएस उदाहरण

जेएस उदाहरण जेएस एचटीएमएल डोम जेएस एचटीएमएल इनपुट जेएस एचटीएमएल ऑब्जेक्ट्स जेएस एचटीएमएल इवेंट्स जेएस ब्राउज़र जे एस संपादक जे एस व्यायाम जे एस प्रश्नोत्तरी जेएस प्रमाणपत्र

जे एस संदर्भ

जावास्क्रिप्ट ऑब्जेक्ट्स एचटीएमएल डोम ऑब्जेक्ट्स


जावास्क्रिप्ट क्लोजर


जावास्क्रिप्ट चर स्थानीय या वैश्विक दायरे से संबंधित हो सकते हैं।

वैश्विक चर को बंद करने के साथ स्थानीय (निजी) बनाया जा सकता है ।


सार्वत्रिक चर

फ़ंक्शन के अंदरfunction परिभाषित सभी चरों को इस तरह एक्सेस कर सकता है :

उदाहरण

function myFunction() {
  let a = 4;
  return a * a;
}

लेकिन a फ़ंक्शन के बाहरfunction परिभाषित वेरिएबल्स को भी एक्सेस कर सकता है, जैसे:

उदाहरण

let a = 4;
function myFunction() {
  return a * a;
}

अंतिम उदाहरण में, a एक वैश्विक चर है।

एक वेब पेज में, वैश्विक चर विंडो ऑब्जेक्ट से संबंधित होते हैं।

पृष्ठ में (और विंडो में) सभी लिपियों द्वारा वैश्विक चर का उपयोग (और परिवर्तित) किया जा सकता है।

पहले उदाहरण में, a एक स्थानीय चर है।

एक स्थानीय चर का उपयोग केवल उस फ़ंक्शन के अंदर किया जा सकता है जहां इसे परिभाषित किया गया है। यह अन्य कार्यों और अन्य स्क्रिप्टिंग कोड से छिपा हुआ है।

समान नाम वाले वैश्विक और स्थानीय चर भिन्न-भिन्न चर हैं। एक को संशोधित करना, दूसरे को संशोधित नहीं करता है।

घोषणा कीवर्ड ( , , या ) के बिना बनाए गए चर हमेशा वैश्विक होते हैं, भले ही वे किसी फ़ंक्शन के अंदर बनाए गए हों।varletconst

उदाहरण

function myFunction() {
  a = 4;
}


परिवर्तनीय जीवनकाल

वैश्विक चर तब तक जीवित रहते हैं जब तक कि पृष्ठ को खारिज नहीं कर दिया जाता है, जैसे कि जब आप किसी अन्य पृष्ठ पर नेविगेट करते हैं या विंडो बंद करते हैं।

स्थानीय चरों का जीवन छोटा होता है। वे तब बनाए जाते हैं जब फ़ंक्शन का आह्वान किया जाता है, और फ़ंक्शन समाप्त होने पर हटा दिया जाता है।


एक काउंटर दुविधा

मान लीजिए कि आप कुछ गिनने के लिए एक चर का उपयोग करना चाहते हैं, और आप चाहते हैं कि यह काउंटर सभी कार्यों के लिए उपलब्ध हो।

आप एक वैश्विक चर का उपयोग कर सकते हैं, और एक functionकाउंटर को बढ़ाने के लिए:

उदाहरण

// Initiate counter
let counter = 0;

// Function to increment counter
function add() {
  counter += 1;
}

// Call add() 3 times
add();
add();
add();

// The counter should now be 3

उपरोक्त समाधान में एक समस्या है: पृष्ठ पर कोई भी कोड ऐड() को कॉल किए बिना काउंटर को बदल सकता है।

add()अन्य कोड को बदलने से रोकने के लिए काउंटर फ़ंक्शन के लिए स्थानीय होना चाहिए :

उदाहरण

// Initiate counter
let counter = 0;

// Function to increment counter
function add() {
  let counter = 0;
  counter += 1;
}

// Call add() 3 times
add();
add();
add();

//The counter should now be 3. But it is 0

यह काम नहीं किया क्योंकि हम स्थानीय काउंटर के बजाय वैश्विक काउंटर प्रदर्शित करते हैं।

हम वैश्विक काउंटर को हटा सकते हैं और फ़ंक्शन को वापस करने के द्वारा स्थानीय काउंटर तक पहुंच सकते हैं:

उदाहरण

// Function to increment counter
function add() {
  let counter = 0;
  counter += 1;
  return counter;
}

// Call add() 3 times
add();
add();
add();

//The counter should now be 3. But it is 1.

यह काम नहीं किया क्योंकि जब भी हम फ़ंक्शन को कॉल करते हैं तो हम स्थानीय काउंटर को रीसेट कर देते हैं।

 एक जावास्क्रिप्ट आंतरिक कार्य इसे हल कर सकता है।


जावास्क्रिप्ट नेस्टेड कार्य

सभी कार्यों की वैश्विक दायरे तक पहुंच है।  

वास्तव में, जावास्क्रिप्ट में, सभी कार्यों के पास "ऊपर" के दायरे तक पहुंच होती है।

जावास्क्रिप्ट नेस्टेड कार्यों का समर्थन करता है। नेस्टेड फ़ंक्शंस के पास "ऊपर" के दायरे तक पहुंच है।

इस उदाहरण में, आंतरिक फ़ंक्शन के पास पैरेंट फ़ंक्शन में वेरिएबल plus()तक पहुंच है :counter

उदाहरण

function add() {
  let counter = 0;
  function plus() {counter += 1;}
  plus();   
  return counter;
}

plus() अगर हम बाहर से समारोह तक पहुंच सकते हैं तो यह काउंटर दुविधा को हल कर सकता है ।

counter = 0हमें केवल एक बार निष्पादित करने का तरीका खोजने की भी आवश्यकता है ।

हमें बंद करने की जरूरत है।


जावास्क्रिप्ट क्लोजर

स्व-आह्वान कार्य याद रखें? यह फ़ंक्शन क्या करता है?

उदाहरण

const add = (function () {
  let counter = 0;
  return function () {counter += 1; return counter}
})();

add();
add();
add();

// the counter is now 3

उदाहरण समझाया गया

वेरिएबल addको सेल्फ-इनवॉकिंग फंक्शन के रिटर्न वैल्यू को सौंपा गया है।

सेल्फ-इनवॉकिंग फंक्शन केवल एक बार चलता है। यह काउंटर को शून्य (0) पर सेट करता है, और एक फ़ंक्शन एक्सप्रेशन देता है।

इस तरह ऐड एक फंक्शन बन जाता है। "अद्भुत" हिस्सा यह है कि यह मूल दायरे में काउंटर तक पहुंच सकता है।

इसे जावास्क्रिप्ट क्लोजर कहा जाता है। यह किसी फ़ंक्शन के लिए " निजी " चर रखना संभव बनाता है।

काउंटर अज्ञात फ़ंक्शन के दायरे से सुरक्षित है, और केवल ऐड फ़ंक्शन का उपयोग करके बदला जा सकता है।

एक क्लोजर एक ऐसा फंक्शन है जिसके पास पैरेंट स्कोप बंद होने के बाद भी पैरेंट स्कोप तक पहुंच होती है।