JavaScript - Globalen Bereich für verschachtelte Funktion deklarieren?

8

Meine Versuche, einer verschachtelten JavaScript-Funktion einen globalen Gültigkeitsbereich zu geben, funktionieren nicht:

%Vor%

Das ist nur Neugierde - Sie haben Recht, dass ich wirklich keinen guten Grund habe, dies zu tun.

TIA - Ich habe keinen SO-Account, um auf deine Antworten zu antworten ...

    
nestor 04.03.2011, 19:56
quelle

5 Antworten

13

function B; erzeugt einfach einen Syntaxfehler.

Sie können einen Funktionsausdruck verwenden. Da Funktionen Objekte erster Klasse sind, können Sie einer Variablen eine Funktion zuweisen:

%Vor%

Sie könnten auch A eine Funktion zurückgeben lassen:

%Vor%

Dies würde die Beziehung zwischen A und B etwas deutlicher machen.

Natürlich können Sie immer eine globale Variable definieren, indem Sie var weglassen, aber Sie sollten dies sehr sorgfältig verwenden. Verwenden Sie so wenig globale Variablen wie möglich.

%Vor%

Und ich wette, es gibt einen besseren Weg, es zu tun, je nachdem, was Ihr eigentliches Ziel ist.

Weitere Informationen zu Funktionen und Funktionsumfang

    
Felix Kling 04.03.2011 19:58
quelle
3

Was ist mit:

%Vor%     
Ross Here 02.08.2013 19:27
quelle
2

Sie können so etwas tun:

%Vor%

Es ist ein bisschen eklig, einen direkten Verweis auf "window" zu haben, so dass Sie dies (aus dem globalen Kontext) tun können:

%Vor%     
Pointy 04.03.2011 19:58
quelle
0

Es scheint ein paar Probleme mit Ihrem Code zu geben

  1. Die erste Zeile scheint kein legales Javascript zu sein (JSLint stimmt zu). Um eine nicht initialisierte Variable zu deklarieren, verwenden Sie die var B; -Syntax
  2. Der Code ruft niemals A auf, um B zu initialisieren, also ruft B () eine nicht initialisierte Variable
  3. auf
  4. Ich bin ziemlich sicher, dass der Code zur Initialisierung von B innerhalb von A auch nicht legal ist.

Versuchen Sie Folgendes

%Vor%     
JaredPar 04.03.2011 20:02
quelle
0

Sie sind nah dran, aber nicht ganz richtig.

  1. Sie müssen B als Variable definieren und dann eine Funktion zuweisen.
  2. Führen Sie auch A () aus, bevor Sie B ausführen, andernfalls ist B undefiniert. Die einfachste Art, es auszuführen, ist die Art, wie ich es in meinem Code-Beispiel zeige.

Dies sind die kleinsten Änderungen an Ihrem Code, damit er wie gewünscht funktioniert:

%Vor%     
Robert Koritnik 04.03.2011 20:06
quelle

Tags und Links