Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der Rolle des Hinzufügens von Symbolen vor js-Funktionen

Detaillierte Erläuterung der Rolle des Hinzufügens von Symbolen vor js-Funktionen

韦小宝
韦小宝Original
2018-03-12 10:03:472361Durchsuche

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);

Heute habe ich die Javascript-Komponente von Bootstrap wird so geschrieben

!function( $ ){
  //...
}( window.jQuery );
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');}//函数赋值表达式定义函数
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');
}();//解析器是无法理解的
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);
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() {}()
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();
gleich ist...


(function(){
 alert("hi")
 })
();
!, + und () sind gleich. Der Effekt kann in


!function(){
 alert("hi")
}
();
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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn