Maison > interface Web > js tutoriel > \'(function () { }) ()\' et \'(function () { })()\' sont-ils fonctionnellement égaux en JavaScript ?

\'(function () { }) ()\' et \'(function () { })()\' sont-ils fonctionnellement égaux en JavaScript ?

Mary-Kate Olsen
Libérer: 2024-10-30 08:53:02
original
917 Les gens l'ont consulté

Are

"(function () { }) ()" et "(function () { })()" sont-ils fonctionnellement égaux en JavaScript ?

En JavaScript, les deux blocs de code suivants semblent produire des résultats identiques :

(function () {
    bar = 'bar';
    alert('foo');
})();

alert(bar);
Copier après la connexion
(function () {
    bar = 'bar';
    alert('foo');
}());

alert(bar);
Copier après la connexion

Les deux blocs affichent le message "foo" suivi de "bar". Cependant, existe-t-il une différence fonctionnelle entre ces deux structures de code ?

Réponse

Les blocs de code sont identiques

Dans des circonstances normales, "(fonction ( ) { }) ()" et "(function () { })()" sont fonctionnellement identiques en JavaScript. Ils invoquent tous deux une fonction anonyme et l’exécutent immédiatement. La fonction initialise la variable bar et alerte le message "foo".

Différences avec une autre syntaxe

Cependant, lorsque une syntaxe supplémentaire est ajoutée au code, des différences peuvent apparaître.

Cas 1 : Syntaxe du constructeur de fonction

Considérez le code suivant :

new (function () {
    this.prop = 4;
}) ().prop;
Copier après la connexion

Ce code crée une nouvelle instance de la classe de la fonction et récupère la propriété prop de la nouvelle instance. Il renvoie la valeur 4.

Cas 2 : Syntaxe de l'espace de noms

Considérez le code suivant :

new ( function() {
    return { Class: function() { } }; 
}() ).Class;
Copier après la connexion

Ce code appelle l'opérateur new sur la propriété Class. En raison des parenthèses imbriquées, la fonction est invoquée normalement et sa valeur de retour est utilisée pour créer une nouvelle instance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal