Ist 'Ereignis' ein reserviertes Wort in JavaScript?
Ich bin ein Anfänger in Javascript. Und wenn ich geübt ich habe etwas bemerkt.
Nehmen diese Funktion:
<script type="text/javascript">
function showChar(sSomeData, oEvent)
{
alert (oEvent.keyCode);
return true;
}
</script>
Wenn ich diese Funktion aufrufen wie diesem:
<input type="text" id="txtTextBox" onkeypress="return showChar('some text', oEvent);" />
Ich bekomme einen JS-Fehler: "Microsoft JScript runtime error: 'oEvent' ist undefiniert"
Aber wenn ich das umbenennen oEvent mit 'Ereignis' wie:
<input type="text" id="txtTextBox" onkeypress="return showChar('some text', event);" />
Dann funktioniert es einwandfrei. Mein Fazit ist 'Ereignis' ist ein reserviertes Wort, das steht für event
argument in Java-Script. Aber wenn ich überprüft haben, das Netz, das ich nicht sehen "Ereignis" als ein reserviertes Wort.
Täusche ich mich oder ist es nicht wirklich dokumentiert wie ein reserviertes Wort?
Dank!
- wenn Sie das add tags für javascript, verwenden Sie 'javascript', nicht 'java' und 'Skript'
- Abgeordnet. Starb ich ein wenig im inneren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht ein reserviertes Schlüsselwort, sondern es ist eine Globale variable im IE zumindest.
event
variable es ist eigentlich ein argument, die überschatteten den globalenevent
variable im IE. Das ist, warum es funktioniert beide IE und FF.Was zunächst das verwirrende für mich ist nicht zu verstehen, wie die Konventionen für die Kodierung der event-Handler eigentlich funktionierte und was Sie war, eine benannte variable, kombiniert mit der impliziten Aufrufe erfolgt durch Javascript-Handler beim einrichten der event-Handler wie diese:
Gut 1
Oben, dein browser ist nicht vorbei
event
an den handler die Funktion das erste argument implizit, so können Sie die Namen Ihrer parameter (hiere
) alles, was Sie wollen, solange Sie konsistent, auch wenn Sie verrückt wie dieses:Gute 2; kreativ benannt
Aber wegen der Art
event
ist als eine Globale, cruddy code funktioniert auch:Cruddy scoping-1
So dass Sie vielleicht auch sehen, doppelt cruddy code wie folgt:
Cruddy Scoping-2
Nun die
event
istevent
? Leider, ist es egal. Unabhängig von der Festlegung des lösungsumfangs stellen wirevent
inevent
soevent
===event
überall! [sic]Aber dieser muss zeigen, dass
event
nicht ein reserviertes Wort. Es ist eine variable. Also, wo man nicht sagen kannbreak = "spam";
Sie kann sagenevent = "spam";
. Also, wenn Sie versuchen, verwenden Siebreak
, die ist vorbehalten, es borks.Was ist wichtig, um zu lernen (und was Ionut ist im wesentlichen sagen, glaube ich), ist, dass Ihrem browser ist lautlos vorbei an der "globalen"
event
var in Ihreonkeypress
handler-egal, was Sie nennen es in Ihrer definition einer Funktion. Verwirrend ist, auch wenn Sie nicht verwenden Sie Ihre parameter für den Zugriff aufevent
in Ihrem handler, können Sie immer noch Zugriff auf dieevent
als einen globalen, wie im Cruddy 1 & 2 vor.Nun wenn ich den Aufruf aus der html-land mit einer
onkeypress
, Paradigmen begann mischen in meinem Kopf. Hier gibt es keine Stille Weitergabe vonevent
in Ihrer handler-Funktion, die als Argumente. Sie müssen explizit übergebenevent
sich selbst, etwa so:Keine andere Konvention, die funktioniert! Und das funktioniert nur, weil die Browser es unterstützen, nicht, weil keine ECMAscript-standard definiert
event
(afaik). Sie nicht verwenden Sie eine der unten wie Sie "könnte" mit .onKeyPress, indem Sie den Namen des Parameters, nach denen inhandlerNamed
:Sinn? Ich war in der Mitte der viel zu kompliziert jsFiddle versuchen, dies zu schreiben, bevor es endlich "Klick" gemacht in Fall hilfreich.
event
übergeben als Funktionsargument verwendet, um zu werfen in Firefox, unde
wird Häufig verwendet, um darzustellen, Fehler-Objekte, das ist der Grund, warum ich immerevt
nutzen und nieevent
überhaupt jegliche Verwirrung zu vermeiden.Gut, der code:
Ist das äquivalent zu den folgenden JavaScript-code:
Es ist nur, dass der Browser den Namen des Ereignisses als argument
event
.So, der Wert des Attributs ist verpackt in eine JS-Funktion erhält ein argument mit dem Namen
event
was ist das event-Objekt.element.onkeypress = function (e) { return showChar('some text', oEvent); };
oder (für den IE)element.onkeypress = function () { return showChar('some text', oEvent); };
oEvent
wäreundefined
in deinem Beispiel.Nein,
event
ist nicht ein reserviertes Wort. Es ist jedoch eine variable, die von allen gängigen Browsern, wenn ein event-handler (z.B. onkeypress) eines DOM-Knotens ausgeführt wird. Im IE ist es auch eine Globale variable.Typische cross-browser Weg ist, um die Veranstaltung entlang dieser Linien.
Auf die DOM-Knoten:
Den event-handling-Funktion:
Durch die Art und Weise, in deinem Beispiel
oEvent
ist der name des Parameters und gelten daher in den Kontext der Funktion, die aufgerufen wird, nicht im Kontext des Aufrufers.Liste der reservierte Wörter in javascript
Dies ist ein Alter, aber da stolperte ich über es, ich denke, ich könnte genauso gut beantworten.
http://www.w3schools.com/js/js_reserved.asp sagt, dass Ereignis ist NICHT ein reserviertes Wort, wie erwähnt, in den Kommentaren oben. Allerdings, wenn Sie Lesen, weiter unten auf der Seite....
"Windows Reservierte Wörter
JavaScript kann verwendet werden, außerhalb von HTML. Es kann verwendet werden, als Programmiersprache wird in vielen anderen Anwendungen.
In HTML müssen Sie (für unterwegs, Sie sollten vermeiden, mit den Namen der HTML-und Windows-Objekte und Eigenschaften:"
Und 'event' werden in der Tabelle unten. So können Sie es verwenden? Sicher. Sollten Sie es verwenden? Nein. Es gibt jede Menge Beispiele auf stackoverflow, die Ereignisse verwenden, aber Sie nutzen es für Klarheit. Wenn Sie code, die Sie brauchen, um es zu Bearbeiten.