En termes simples
(function($){ //code })(jQuery)
Déclare une fonction anonyme, c'est-à-dire transmet l'objet jQuery en paramètre à la fonction
Donnez-moi un exemple
// 全局 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('内部'); })(); })() })(); })();
Exécutez le code et vous verrez l'effet. Il est relativement lent, alors veuillez patienter un moment.
Je viens de tester et j'ai découvert que certains ordinateurs dotés de peu de mémoire peuvent facilement provoquer le crash du navigateur
.
Chrome est tellement armé que même les chaînes sont mises en cache, mais cela n'a pas beaucoup d'effet
Ça n’a rien à voir avec la vitesse, c’est ce que je pense.
(function($){ // code })(jQuery)
Il existe de nombreux plug-ins jQuery, et vous ne pouvez pas être sûr que le nom de variable ou de méthode que vous utilisez n'a pas le même nom que les autres plug-ins, vous devez donc encapsuler tous les codes de plug-in dans une fonction anonyme. ;
Puisque le plug-in utilise jQuery, vous devez importer jQuery dans la fonction anonyme et utiliser la référence de variable $ (car tout le monde est habitué à utiliser $). Bien sûr, vous pouvez également utiliser $ globalement, mais la première condition ne peut pas être remplie
;
Le code encapsulé doit être exécuté, donc la fonction anonyme doit être exécutée et les paramètres jQuery doivent être transmis.
Résumé
En fait, il s'agit de protéger le symbole $. Peu importe si le monde extérieur introduit une autre bibliothèque qui interfère avec $, cela n'interférera pas avec le fait que $ dans la fonction anonyme est jQuery, car il est transmis comme un paramètre.