javascript जावास्क्रिप्ट में वैश्विक चर घोषित कैसे करें?




global-variables (5)

JQuery के साथ आप यह कर सकते हैं, कोई फर्क नहीं पड़ता कि घोषणा कहां है:

$my_global_var = 'my value';

और हर जगह उपलब्ध होगा। मैं इसे त्वरित छवि दीर्घाओं के लिए उपयोग करता हूं, जब छवियां विभिन्न स्थानों पर फैली होती हैं, जैसे:

$gallery = $('img');
$current = 0;

$gallery.each(function(i,v){
    // preload images
    (new Image()).src = v;
});
$('div').eq(0).append('<a style="display:inline-block" class="prev">prev</a> <div id="gallery"></div> <a style="display:inline-block" class="next">next</a>');
$('.next').click(function(){
    $current = ( $current == $gallery.length - 1 ) ? 0 : $current + 1;
    $('#gallery').hide().html($gallery[$current]).fadeIn();
});
$('.prev').click(function(){
    $current = ( $current == 0 ) ? $gallery.length - 1 : $current - 1;
    $('#gallery').hide().html($gallery[$current]).fadeIn();
});

युक्ति : इस पूरे कोड को इस पृष्ठ में कंसोल में चलाएं ;-)

मैं जावास्क्रिप्ट में वैश्विक चर कैसे घोषित कर सकता हूं?


यदि यह एकमात्र ऐसा एप्लिकेशन है जहां आप इस चर का उपयोग करने जा रहे हैं, तो फ़ेलिक्स का दृष्टिकोण उत्कृष्ट है। हालांकि, अगर आप एक jQuery प्लगइन लिख रहे हैं, तो "ऑब्जेक्टिंग" पर विचार करें (बाद में उद्धरणों पर विवरण ...) jQuery ऑब्जेक्ट के तहत आवश्यक चर और फ़ंक्शन। उदाहरण के लिए, मैं वर्तमान में एक jQuery पॉपअप मेनू पर काम कर रहा हूं जिसे मैंने मिनीमेनू कहा है। इस प्रकार, मैंने jQuery के तहत "नेमस्पेस" miniMenu को परिभाषित किया है, और मैं वहां सबकुछ miniMenu हूं।

जब मैं जावास्क्रिप्ट नेमस्पेस के बारे में बात करता हूं तो उद्धरणों का उपयोग करने का कारण यह है कि वे सामान्य ज्ञान में वास्तव में नामस्थान नहीं हैं। इसके बजाए, मैं सिर्फ जावास्क्रिप्ट ऑब्जेक्ट का उपयोग करता हूं और इस ऑब्जेक्ट के गुणों के रूप में अपने सभी कार्यों और चर को स्थान देता हूं।

साथ ही, सुविधा के लिए, मैं आम तौर पर प्लगइन नेमस्पेस को उन चीज़ों के लिए नामस्थान के साथ उप-स्थान देता i जिन्हें केवल प्लगइन के भीतर आंतरिक रूप से उपयोग किया जाना चाहिए, ताकि प्लगइन के उपयोगकर्ताओं से इसे छिपाना पड़े।

यह इस तरह काम करता है:

// An object to define utility functions and global variables on:
$.miniMenu = new Object(); 
// An object to define internal stuff for the plugin:
$.miniMenu.i = new Object();

अब मैं सिर्फ $.miniMenu.i.globalVar = 3 या $.miniMenu.i.parseSomeStuff = function(...) {...} जब भी मुझे वैश्विक स्तर पर कुछ सहेजने की ज़रूरत है, और मैं इसे अभी भी बाहर रख सकता हूं वैश्विक नामस्थान।


यदि आपको उत्पादन कोड में वैश्विक चर उत्पन्न करना है (जिसे टालना चाहिए) हमेशा उन्हें स्पष्ट रूप से घोषित करें:

window.globalVar = "This is global!";

हालांकि वैरिएबल को केवल छोड़कर एक वैरिएबल वैरिएबल को परिभाषित करना संभव है (मान लीजिए कि एक ही नाम का कोई स्थानीय चर नहीं है), ऐसा करने से एक अंतर्निहित वैश्विक उत्पन्न होता है, जो करना एक बुरी चीज है और सख्त मोड में त्रुटि उत्पन्न करेगी।


closures करने का उपयोग करने का सबसे अच्छा तरीका है, क्योंकि window ऑब्जेक्ट बहुत गुणों के साथ बहुत घिरा हुआ है।

एचटीएमएल

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript" src="init.js"></script>
    <script type="text/javascript">
      MYLIBRARY.init(["firstValue", 2, "thirdValue"]);
    </script>
    <script src="script.js"></script>
  </head>

  <body>
    <h1>Hello !</h1>
  </body>    
</html>

init.js ( इस उत्तर के आधार पर)

var MYLIBRARY = MYLIBRARY || (function(){
    var _args = {}; // private

    return {
        init : function(Args) {
            _args = Args;
            // some other initialising
        },
        helloWorld : function(i) {
            return _args[i];
        }
    };
}());

script.js

// Here you can use the values defined in the html as if it were a global variable
var a = "Hello World " + MYLIBRARY.helloWorld(2);

alert(a);

यहां plnkr । उम्मीद है कि यह मदद करो!


वैश्विक वैरिएबल का एक मूल उदाहरण यहां दिया गया है कि आपके शेष कार्य एक्सेस कर सकते हैं। यहां आपके लिए एक लाइव उदाहरण दिया गया है: http://jsfiddle.net/fxCE9/

var myVariable = 'Hello';
alert('value: ' + myVariable);
myFunction1();
alert('value: ' + myVariable);
myFunction2();
alert('value: ' + myVariable);


function myFunction1() {
    myVariable = 'Hello 1';
}

function myFunction2() {
    myVariable = 'Hello 2';
}

यदि आप इसे jquery ready () फ़ंक्शन के भीतर कर रहे हैं तो सुनिश्चित करें कि आपका चर आपके अन्य कार्यों के साथ तैयार () फ़ंक्शन के अंदर है।





global-variables