ändern - Wie deklariere ich eine globale Variable in JavaScript?




nodejs global variable (4)

Wie kann ich eine globale Variable in JavaScript deklarieren?


Deklarieren Sie die Variable außerhalb von Funktionen

function dosomething(){
  var i = 0; // can only be used inside function
}

var i = '';
function dosomething(){
  i = 0; // can be used inside and outside the function
}

Der beste Weg ist die Verwendung von closures , da das window sehr, sehr mit Eigenschaften überladen wird .

Html

<!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 (basierend auf dieser Antwort )

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);

Hier ist der plnkr . Hoffe es hilft!


Mit jQuery können Sie das tun, egal wo die Deklaration ist:

$my_global_var = 'my value';

Und wird überall verfügbar sein. Ich benutze es für schnelle Bildergalerien, wenn Bilder an verschiedenen Orten verteilt sind:

$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();
});

Tipp : Führe den ganzen Code in der Konsole auf dieser Seite aus ;-)


Wenn Sie globale Variablen im Produktionscode erzeugen müssen (was vermieden werden sollte), deklarieren Sie diese immer explizit :

window.globalVar = "This is global!";

Während es möglich ist, eine globale Variable zu definieren, indem man einfach var auslässt (vorausgesetzt, es gibt keine lokale Variable mit demselben Namen), erzeugt dies ein implizites globales, was eine schlechte Sache ist und im strikten Modus einen Fehler erzeugen würde.





global-variables