Maison > interface Web > js tutoriel > Une brève analyse du principe de la fonction anonyme auto-exécutable Javascript (function() { })()

Une brève analyse du principe de la fonction anonyme auto-exécutable Javascript (function() { })()

高洛峰
Libérer: 2017-01-04 16:06:35
original
1392 Les gens l'ont consulté

La fonction est l'objet le plus flexible de JavaScript. Nous expliquons ici uniquement l'utilisation de ses fonctions anonymes. Les fonctions anonymes font référence à des fonctions qui ne spécifient pas de nom de fonction ou de pointeur. Les fonctions anonymes auto-exécutables ne sont que l'une d'entre elles. Ce type de fonction est appelé ci-dessous : fonction auto-exécutable

Ce qui suit est la plus courante. fonction auto-exécutable :

// 传统匿名函数
(function() {
alert('hello');
})();
Copier après la connexion

L'effet d'exécution de ce code est d'apparaître lorsque la page est rechargée : "bonjour"

Qu'est-ce qui l'invite à s'exécuter automatiquement ? , regardez le code suivant

// 在传统写法上去掉小括号,并在前面加上运算符 ~,!,+,-
~function(){
alert('hello');
}();
!function(){
alert('hello');
}();
+function(){
alert('hello');
}();
-function(){
alert('hello');
}();
Copier après la connexion

Il n'y a aucune différence entre ces méthodes d'écriture et la méthode traditionnelle mentionnée ci-dessus

J'ai trouvé que le dénominateur commun de ces méthodes d'écriture est l'opérateur. En fait Les parenthèses traditionnelles () sont aussi un type d'opération, apparaissant dans : a=b*(c d),

L'opérateur est passé au paramètre auto-généré = la fonction est automatiquement exécutée ? Mais certains symboles ne sont pas pris en charge, comme "=, *, /". La raison de son auto-exécution est encore très mystérieuse, et je ne trouve pas de réponse décente sur Internet

Puis j'ai découvert. un phénomène magique. Ces opérateurs peuvent être empilés à l'infini. . . . . .

// function前面是特定符号可以无限叠加...
~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~!+-~!+-+-!~~~~~~~~+-!!!!!!+function a(b) {
alert('hello');
}();
Copier après la connexion

Le programme fonctionne normalement !!!!!!

Cependant, il existe deux situations dans lesquelles une erreur sera signalée

Si trois ou plus " " ou "apparaissent successivement -", une erreur se produira;

Si deux symboles " " ou "-" apparaissent dans une rangée et sont suivis d'autres symboles, une erreur se produira, comme "~", "--";

 Message d'erreur : Uncaught ReferenceError : expression de gauche non valide dans l'opération de préfixe (ce qui signifie que l'expression de gauche est fausse)

Ensuite, j'ai utilisé le même symbole pour opérer une variable et a constaté qu'elle était exactement la même. Cela peut être possible. Cela signifie que le fonctionnement de JavaScript provoque l'exécution automatique de la fonction, ce qui peut également être compris comme un appel à cette fonction par opération !

Ce n'est pas que la fonction s'exécute toute seule, mais la fonction est appelée par calcul ! , mais ne prend en charge que certaines méthodes de calcul !

De plus, cette fonction auto-exécutable ne peut pas être une fonction anonyme ! En regardant le code ci-dessus, j'ai défini le nom de la fonction a dans la fonction après l'opérateur. Il n'y a pas d'exception, mais cela ne sert à rien - -!, ce a ne peut toujours pas être appelé par d'autres méthodes, mais je pense que beaucoup de gens l'appellent. it Il y a quelque chose qui ne va pas avec le fait qu'il s'agisse d'une fonction anonyme !

Ce qui précède est une brève analyse des principes des fonctions anonymes auto-exécutables Javascript (function() { })() introduites par l'éditeur. J'espère que cela sera utile à tout le monde !

Pour plus d'articles sur les principes des fonctions anonymes auto-exécutables Javascript (function() { })(), veuillez faire attention au site Web PHP chinois !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal