2016-12-02 1 views
0

Ich bin ein Anfänger in Javascript, ich habe versucht, mit Variablen zu spielen, bis ich dieses Problem erreicht, wenn ich eine Variable namens name habe, und ich kommentierte seinen Definitionsschritt, es hat immer noch den gleichen Wert, obwohl ich es kommentiert. und dies geschieht nur mit dem Schlüsselwort "name", also was ist das?was bedeutet name schlüsselwort in javascript?

<script> 
    // var name="mina"; i commented it now , so if you want to test , enable it once , and then comment it , it will still give you the result although i commented it and deleted the cache 
    // var name; 
alert(name); 
</script> 
+0

Sie könnten globalen Namen Variable wo sonst haben. – Mehari

+0

Es ist eine globale Bezeichnung für das aktuelle Fenster, normalerweise '' ''. –

+0

Javascript-Code wird nicht isoliert ausgeführt - es gibt immer einen Kontext. In Ihrem Fall ist dieser Kontext das 'window' Objekt, also bezieht sich Ihr' name' tatsächlich auf 'window.name' - den Namen (nicht den Titel) des Fensters. Erfahren Sie mehr über Scoping und globalen Kontext in Javascript, oder Sie werden einige Überraschungen bekommen :) – Luaan

Antwort

3

name ist kein reserviertes Wort in Javascript. Da der Beispielcode nicht innerhalb eines bestimmten Bereichs (innerhalb einer Funktion usw.) ausgeführt wird, verweist die Variable name auf window.name.

console.log(name); 
// output: "" (window.name) 

(function(){ 
console.log(name); 
})() 
// output: undefined 

Weitere Details finden Sie unter https://developer.mozilla.org/en/docs/Web/API/Window/name.

+0

als Sie Senior, habe ich den folgenden Code versucht, und geben Sie mir das gleiche Ergebnis Alert (Name); alert (window.name) ;, das bedeutet, dass Fenster eine Eigenschaft namens name hat und wenn wir Namen setzen wir tatsächlich set window.name, aber wie kann ich dies vermeiden oder überschreiben Eigenschaften von Windows oder etwas anderes – mina

+0

oder wenn meine Variablen werden Fenster oder etwas statische Variablen hinzugefügt? – mina

+0

In diesem Fall können Sie keine Variable mit demselben Namen erstellen, da Ihr Skript im globalen Bereich 'window' ausgeführt wird. 'var name = 'test' würde' window.name' überschreiben. Ich empfehle, das Skript innerhalb einer Funktion auszuführen (zweites Beispiel), damit der lokale Bereich die Fenstereigenschaften nicht überschreibt. – Anth12

0

Die Variable ist nicht in einer Funktion, so ist es eine globale Variable. Globale Variablen werden dem Fenster hinzugefügt und bleiben dort (bis Sie die Seite aktualisieren, wenn ich mich richtig erinnere).

Sie setzen die Variable nicht zurück, damit sie den gleichen Wert behält.

+0

Ich habe es mehrmals aktualisiert und habe das gleiche, obwohl es kommentiert wurde, und bis jetzt hat es den Definitionswert und auch ich habe das gelöscht Cache und das gleiche – mina

+0

@mina Ich denke, es wird dort bleiben, bis Sie den Browser oder für eine bestimmte Zeit schließen. Eine Sache; Sie sollten keine globalen Variablen verwenden, wenn Sie dies verhindern möchten. Noch besser; nicht vermischen HTML mit Javascript. Verwenden Sie stattdessen separate Dateien und Funktionen. –

+0

@JoshuaBakker der globale Umfang ist in keiner Weise beständig. Alle hinzugefügten neuen Eigenschaften werden sofort auf Refeshesh gelöscht, sie "verweilen" nicht weiter. Wenn jedoch etwas beim Laden der Seite vorhanden ist, ist es höchstwahrscheinlich, dass es auch beim Laden der nächsten Seite vorhanden ist, weil etwas konsistent hinzugefügt wird. Das ist im Allgemeinen sowieso - 'name' ist eine normale Eigenschaft von' window', also würdest du erwarten, dass es immer da ist. – vlaz