Wenn Sie sich einige JQuery-Plug-Ins ansehen, können Sie häufig Semikolons, Ausrufezeichen usw. sehen, die vor Js-Funktionen hinzugefügt wurden. Ich glaube, dass viele Schüler die Funktion des Hinzufügens dieses Symbols nicht verstehen um es hinzuzufügen? Nun, lassen Sie uns heute ausführlich über die Rolle des Hinzufügens von Symbolen vor js-Funktionen sprechen!
Die Rolle des Hinzufügens von Semikolons und Ausrufezeichen vor js-Funktionen
Was bedeutet das Symbol vor der js-Funktion? Was ist der Nutzen?
Im Allgemeinen ist die Schreibweise im JQuery-Plug-in so
(function($) {
//...
})(jQuery);
Nach dem Login kopieren
Nach dem Login kopieren
Heute habe ich die Javascript-Komponente von Bootstrap<🎜 gesehen > wird so geschrieben
!function( $ ){
//...
}( window.jQuery );
Nach dem Login kopieren
Warum muss man ein „!“ voranstellen?
Wir alle wissen, dass es zwei Möglichkeiten gibt, Funktionen zu deklarieren
function fnA(){alert('msg');}//声明式定义函数
var fnB = function(){alert('msg');}//函数赋值表达式定义函数
Nach dem Login kopieren
Die beiden Funktionen, die in der Frage des Herausgebers auftauchten, sind beide
anonyme Funktionen. Normalerweise rufen wir eine Methode wie folgt auf: FunctionName()
Wenn wir jedoch versuchen, () am Ende einer „Funktion definieren“ hinzuzufügen, kann der Parser dies nicht verstehen.
function msg(){
alert('message');
}();//解析器是无法理解的
Nach dem Login kopieren
Die aufrufende Methode der definierten Funktion sollte msg(); sein.
Wenn Sie den Funktionskörperteil mit () umschließen, kann er ausgeführt werden und der Parser meldet keinen Fehler , wie zum Beispiel:
(function($) {
//...
})(jQuery);
Nach dem Login kopieren
Nach dem Login kopieren
Warum ist es dann in Ordnung, den Funktionskörper mit () zu umschließen?
Es stellt sich heraus, dass der Parser die definierte Funktion in Form eines
Funktionsausdrucks aufruft, wenn Sie Klammern verwenden, um den definierten Funktionskörper einzuschließen. Mit anderen Worten: Jede Methode, die eine Funktion in einen Funktionsausdruck umwandeln kann, kann es dem Parser ermöglichen, die definierte Funktion korrekt aufzurufen.
Und ! ist eine davon, und + - || haben alle solche Funktionen.
Außerdem ist die Verwendung von ! möglicherweise eher eine Frage der Gewohnheit. Verschiedene Betreiber haben unterschiedliche Leistungen.
dient lediglich dazu, ein Zeichen wegzulassen ...
// 这么写会报错,因为这是一个函数定义:
function() {}()
// 常见的(多了一对括号),调用匿名函数:
(function() {})()
// 但在前面加上一个布尔运算符(只多了一个感叹号),就是表达式了,将执行后面的代码,也就合法实现调用
!function() {}()
Nach dem Login kopieren
kann auch ein unärer
-Operator wie ~+- vorangestellt werden. . Tatsächlich gibt es mehrere Konformitäten, die sicherstellen können, dass die anonyme Funktion sofort ausgeführt wird, nachdem sie
var hi = function(){
alert("hi")
};
hi();
Nach dem Login kopieren
gleich ist...
(function(){
alert("hi")
})
();
Nach dem Login kopieren
!, + und () sind gleich. Der Effekt kann in
!function(){
alert("hi")
}
();
Nach dem Login kopieren
geändert werden. Es spart ein Zeichen als () oder sieht besser aus als ()
Wir alle wissen, dass das Semikolon mit der Vorderseite verbunden ist. Trennen Sie den Code. js kann Zeilenumbrüche verwenden, um den Code zu trennen. Nach dem Zusammenführen und Komprimieren mehrerer js-Dateien werden die Zeilenumbrüche jedoch im Allgemeinen gelöscht, sodass beim Verbinden Fehler auftreten können Das Hinzufügen eines Semikolons ist sicher. Die Ausrufezeichen, die Sie sehen, befinden sich normalerweise in komprimierten JS-Dateien, denn wenn anonyme Funktionen aufgerufen werden, verwenden wir normalerweise die Form:
(function(){})() , aber Sie können auch eine andere Form verwenden: !function(){}() Das vorangehende !-Zeichen kann durch unäre Operatoren wie -+~ ersetzt werden, wodurch 1 Byte eingespart wird.
Weitere empfohlene Artikel:
JavaScript-Funktionsbindungs-Nutzungsanalyse
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Rolle des Hinzufügens von Symbolen vor js-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!