Einfach gesagt
(function($){ //code })(jQuery)
Deklariert eine anonyme Funktion, d. h. übergibt das jQuery-Objekt als Parameter an die Funktion
Geben Sie mir ein Beispiel
// 全局 var str = "全局字符串..."; (function () { // 第1层 (function () { // 第2层 (function () { // 第3层 (function () { // 第4层 层数越多,访问全局越慢 console.time('全局'); for (var i=0; i<1e6; i++) { str += Math.random().toString().substr(2, 2); } console.timeEnd('全局'); })(); })(); })(); })(); // 局部 (function () { // 第1层 (function () { // 第2层 (function () { // 第3层 (function () { // 第4层 var str = "内部字符串..."; var random = Math.random; console.time('内部'); for (var i=0; i<1e6; i++) { str += random().toString().substr(2, 2); } console.timeEnd('内部'); })(); })() })(); })();
Führen Sie den Code aus und Sie werden den Effekt sehen. Er ist relativ langsam, also warten Sie bitte eine Weile.
Ich habe gerade getestet und festgestellt, dass es bei einigen Computern mit kleinem Speicher leicht zum Absturz des Browsers kommen kann
Chrome ist so bewaffnet, dass sogar Zeichenfolgen zwischengespeichert werden, aber es hat keine große Auswirkung
Das hat meiner Meinung nach nichts mit der Geschwindigkeit zu tun.
(function($){ // code })(jQuery)
Es gibt viele jQuery-Plug-Ins und Sie können nicht sicher sein, dass der von Ihnen verwendete Variablen- oder Methodenname nicht denselben Namen wie andere Plug-Ins hat. Daher müssen Sie alle Plug-In-Codes in einer anonymen Funktion kapseln ;
Da das Plug-in jQuery verwendet, müssen Sie jQuery in die anonyme Funktion importieren und die Variablenreferenz $ verwenden (da jeder an die Verwendung von $ gewöhnt ist). Natürlich können Sie $ auch global verwenden, aber die erste Bedingung kann nicht erfüllt werden;
Der gekapselte Code muss ausgeführt werden, daher muss die anonyme Funktion ausgeführt und jQuery-Parameter übergeben werden.
Tatsächlich dient es dem Schutz des $-Symbols. Unabhängig davon, ob die Außenwelt eine andere Bibliothek einführt, die $ stört, wird die Tatsache, dass $ in der anonymen Funktion jQuery ist, nicht beeinträchtigt, da es als übergeben wird ein Parameter.