start javascript-code mit $(Funktion, etc
Ich studiere Rückgrat und die todo-Beispiel-apps aus http://todomvc.com/
Ich habe bemerkt, es gibt 3 severals Arten der Gründung der code in den Dateien:
$(function() {
//code here
});
$(function( $ ) {
//code here
});
(function() {
//code here
}());
Verstehe ich nicht die Unterschiede und Wann sollte ich die Verwendung einer über den anderen.
Ich sah auch einige Menschen mit diesem zu beginnen-code:
$(document).ready(function(){
//code here
});
Aus, was ich gesehen habe, dies ist die vollständige Schreibweise richtig?
In einer mehr Allgemeinen Weise, ich sollte immer meine javascript-code in etwas wie, dass in den einzelnen Dateien?
Vielen Dank für Ihre Beratung.
- Das Dritte Beispiel ist nicht äquivalent zu den anderen.
- Siehe auch [Dollar-Zeichen vor selbst deklarieren, anonyme Funktion in JavaScript?](stackoverflow.com/questions/7614574/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
$(document).ready(function(){})
stellt sicher, dass Ihr code läuft auf DOM-ready, so dass Sie Zugriff auf das DOM. Sie können mehr über diese in die jQuery-Dokumentation.$(function(){})
ist nur ein alias auf #1. Jeder code in der hier zu warten, bis das DOM-ready (siehe die Dokumentation).$(function($){})
ist äquivalent zu #1 und #2, nur bekommen Sie eine saubere Referenz zu jQuery in der im lokalen Bereich (siehe Hinweis unten). Sie können ebenfalls übergeben$
auf die Funktion in #1, und es werde das gleiche tun (erstellen Sie eine lokale Referenz auf jQuery).(function(){}())
ist nur ein self-executing-anonym-Funktion, verwendet werden, um erstellen Sie eine neue Schließung.Bitte beachten Sie, dass keine dieser spezifischen Rückgrat. Die ersten 3 sind spezifisch für jQuery, während #4 ist nur Vanille JavaScript.
Hinweis: Zu verstehen, was Los in #3 oben, denken Sie daran, dass
$
ist ein alias fürjQuery
. Aber jQuery ist nicht die einzige Bibliothek, die verwendet die$
variable. Da die$
überschrieben werden kann, indem jemand, den Sie wollen, um sicherzustellen, dass in Ihrem Geltungsbereich, die$
wird immer auf jQuery - daher der$
argument.Am Ende, es im Grunde darauf an, die folgenden 2 Optionen:
Wenn Ihr JavaScript geladen wird in der
head
, müssen Sie warten, bis Dokument bereit, so verwenden Sie diese:Wenn Sie laden Sie Ihre JavaScript an der Unterseite des Dokuments (vor dem schließenden body-tag - das sollten Sie auf jeden Fall tun), dann gibt es keine Notwendigkeit zu warten für das Dokument bereit (da der DOM ist schon aufgebaut durch die Zeit, die der parser bekommt Ihr Skript), und eine AU (A. K. A. IIFE) ausreichen:
P. S. Für ein gutes Verständnis von Schließungen und Umfang, siehe JS101: EINE Kurze Lektion über Umfang.
2. ... is just an alias to #1.
und3. ... is equivalent to #2 ...
Dies macht es Aussehen wie$(document).ready(function(){})
und$(function(){})
und$(function($){})
sind alle irgendwie gleich. Wenn einige dieser Nummern beziehen sich auf die un-nummerierte Beispiele in den OP ' s Frage, dann deine Antwort wird sicherlich profitieren von ein wenig Klärung. - ODER könnte es sein, dass ich das verwechselt man! Entweder Weg, ich bin sicher, es kann geklärt werden, um auszuschließen, die falsche interpretation$(function(){})
stillschweigend warten-Dokument bereit! Also dachte ich, es muss schon ein weiterer Weg, um deine Antwort gelesen. Ich bin mir nicht sicher, ob ich der einzige bin so dumm ...Ich denke, es macht Sinn, zu beginnen, indem wir erkennen, dass
$ = jQuery
. Der Zweck, der unten beim Lesen über namespaces innerhalb von anonymen Funktionen machen mehr Sinn. Aber im wesentlichen können Sie entweder von Ihnen. Würde man mitjQuery()
statt$()
wenn Sie mit mehreren Bibliotheken, und wollte die$
verwendet werden, indem der andere einen.Mehr Informationen auf dem Dokument.ready()
Setzen die
$
innerhalb der Klammern sorgt für die jQuery $ alias (Sie kann sicher sein, es bedeutet immer jQuery diese Weise).Schließlich haben Sie eine IIFE (Sofort-Invoked Function Expression)
- IIFE Erklärung
Des $ an der Spitze (mit passenden jQuery auf der Unterseite) bedeuten, dass die
$ (dollar-Zeichen) steht für jQuery im Rahmen der namepsace.
Dies geschieht, um sicherzustellen, dass die anderen Bibliotheken nicht kollidieren mit dem, was die Entwickler
will/möchte, das $ verwendet werden.
Mehr Informationen über anonyme Funktionen
Nun, wenn wir außerhalb der namespace -, können wir sehen, wie diese internen/öffentlichen Methoden und Variablen erfolgen:
Diese beiden:
Sind direkt gleichwertig, Sie sind beide den Weg zu beginnen, einige jQuery, wenn das Dokument geladen hat. Der erstere ist einfach nur eine kürzere version des letzteren.
Diese:
ist nur ein scoped-Funktion mit null als Parameter, die nennt sich ab sofort mit null Parametern.