2017-02-16 4 views
0

Ich habe eine Webanwendung, die mehrere Skript-Tags hat.Wie behandelt der Browser den JavaScript-Variablenbereich?

Angenommen, ich habe eine Variable namens customPage im Tag:

<script type="text/javascript"> 
    var customPage = callSomeFunction(); 
<script> 

Elsewhere in the page... 

<script type="text/javascript"> 
    var customPage = callSomeOtherFunction(); 
<script> 

Was ist der Anwendungsbereich dieser JavaScript-Variablen, da sie alle definiert sind, mit dem gleichen Namen? Werden sie sich gegenseitig überschreiben? Oder haben sie alle ihren eigenen Wert?

+0

Teilansichten sollte keine Skripte enthalten. –

+0

gehen Sie zu [dies] (http://StackOverflow.com/Questions/500431/what-is-the-Scope-of-Variables-in-Javascript) Frage – m87

+0

Meine Antwort ist nicht mehr gültig nach Ihrer Bearbeitung, weil Ihre Variablen sind jetzt innerhalb von Funktionsaufrufen. Jede Funktion hat ihre eigenen lokalen Variablen. – Phrogz

Antwort

0

Variablen, die auf der 'obersten' Ebene eines <script>-Elements deklariert sind, sind Teil des JavaScript-Objekts Global. In Webbrowsern werden dadurch Eigenschaften des Objekts window festgelegt.

Welcher Code auch immer ausgeführt wird, überschreibt den Wert der Variablen aus dem ersten Codebeispiel.

<script> 
 
var foo = "hello"; 
 
console.log(foo, window.foo); 
 
</script> 
 

 
<script> 
 
var foo = "world"; 
 
console.log(foo, window.foo); 
 
</script>

Das obige Codefragment zeigt:

hello hello 
world world 

(Das zeigt auch, dass Sie sich die Antwort auf diese Frage testeten konnten TIAS!.)

+0

Was ist die beste Praxis für das Halten von Variablen in einer Webseite? Angenommen, ich habe mehrere div -Tags, die Tabellen auf meiner Seite darstellen, aber jede Tabelle enthält ein bestimmtes Javascript-Objekt namens TableDataManager. Wie würde ich die TableDataManager-Instanz jeder Tabelle verfolgen? –

+0

@JoseChavez Keine globalen Variablen verwenden? Speichern Sie JS-Objekte, die jedem Element zugeordnet sind, als expando-Eigenschaft für das Element selbst? Es ist schwer zu beraten, ohne mehr Details zu erfahren. – Phrogz

+0

@JoseChavez Um eine allgemeine Antwort zu geben, verwenden Sie ein Projekt namens Objekt, wie 'var myproj = {foo: 'Hallo', bar: 'Welt'}' – LGSon

Verwandte Themen