Im Google Closure-Compiler erhalte ich die Warnung
WARNUNG - gefährlicher Gebrauch des globalen Gegenstandes
Hier ist ein Beispiel. Die Fehlerzeile und der Offset beziehen sich auf den Anfang des Wortes this
Ich würde es einfach in eine anonyme Methode ändern, aber ich verwende aToggle
an anderer Stelle in der Datei erneut, daher muss es benannt werden.
Ich könnte aToggle
als /**@constructor*/
markieren - aber es ist kein Konstruktor. Gibt es eine weitere Anmerkung, die ich verwenden kann, um diese Warnung zu beseitigen, oder bin ich fest zwischen der Markierung als Konstruktor oder der Anzeige einer Menge nutzloser Warnungen?
Bearbeiten : Ich habe Closure: The Definitive Guide gelesen und festgestellt, dass Sie einfach die /** @this {Element} */
Annotation vor Ihrem Event-Handler, damit Closure Compiler aufhört, sich zu beschweren.
Weitere Informationen finden Sie in der Closure Compiler-Warnung . Der Closure-Compiler gibt diese Warnung aus, wenn Sie this
in einer Funktion verwenden, die nicht entweder mit /** @constructor */
annotiert ist oder sich innerhalb von prototype
einer Klasse befindet. Der Compiler nimmt an, dass Sie niemals this
verwenden, wenn eine Funktion im Kontext eines anderen Objekts aufgerufen wird (was Ereignisrückrufe tun).
Einige Stellen, die Sie möglicherweise ändern müssen, damit Closure Compiler mit dieser Warnung nicht mehr klagt:
link.onclick = ...
nicht direkt, weil du mit this
und e || window.event
herumspielen musst. Verwenden Sie stattdessen jQuery, um den Ereignishandler zu umbrechen, da das Ereignisobjekt von jQuery e.currentTarget
hat. this
in jQuery.each
verwenden, ersetzen Sie this
durch den zweiten Parameter Ihrer Funktion. ZB jQuery.each([1, 2, 3], function(i, val) { ... val ... };
. Ich kenne JQuery nicht sehr gut, aber ich denke, Sie können etwas wie:
verwenden %Vor%Hier können Sie das angeklickte Ziel von einem generischen cross-browser-Ereignisobjekt abrufen.
BEARBEITEN: Als Ratschlag verwenden Sie { }
mit Ihrem if else
und verwenden Sie Semikolons, verlassen Sie sich nicht auf Ihren Browser, um es für Sie zu tun.
Um die Closure-Tools optimal zu nutzen, wird empfohlen, die Closure-Bibliothek in Kombination mit dem Compiler zu verwenden (wenn auch nicht notwendig)
Erstens machst du es wahrscheinlich falsch. : -)
@Jan hatte die richtige Idee. Aber Sie sollten wahrscheinlich mit dem folgenden gehen:
%Vor%und beim Kompilieren:
Verwenden Sie die folgende externe jQuery-Datei, die dem Closure-Compiler mitteilt, was in jQuery geschieht: Ссылка
Wenn Sie möchten, dass die Warnmeldung verschwindet, ersetzen Sie this
durch link
.
Tags und Links javascript google-closure-compiler google-closure