Maison  >  Article  >  interface Web  >  Comment puis-je créer une fonction en JavaScript qui ne s'exécute qu'une seule fois ?

Comment puis-je créer une fonction en JavaScript qui ne s'exécute qu'une seule fois ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-22 23:32:29679parcourir

How Can I Create a Function in JavaScript That Executes Only Once?

Création d'une fonction en JavaScript exécutable une seule fois

En JavaScript, il est parfois nécessaire de restreindre l'exécution d'une fonction à une seule instance. Alors que les variables statiques peuvent y parvenir dans des langages comme C , JavaScript offre une solution plus élégante grâce aux fermetures.

Une fermeture, une fonction qui préserve son contexte même après la fin de sa portée englobante, permet la création de fonctions qui ne peut être invoqué qu’une seule fois. En encapsulant l'indicateur d'exécution dans une fermeture, nous pouvons garantir qu'il reste persistant et inaccessible au code externe.

Voici un exemple d'utilisation d'une fermeture pour créer une fonction exécutable unique :

<code class="javascript">var something = (function() {
    var executed = false;
    return function() {
        if (!executed) {
            executed = true;
            // do something
        }
    };
})();

something(); // "do something" happens
something(); // nothing happens</code>

Cette fonction garantit que le code inclus dans la fermeture n'est exécuté qu'une seule fois, malgré les invocations ultérieures.

Alternativement, si vous préférez une approche plus encapsulée, vous pouvez utiliser une fonction utilitaire comme celle ci-dessous :

<code class="javascript">function once(fn, context) { 
    var result;
    return function() { 
        if (fn) {
            result = fn.apply(context || this, arguments);
            fn = null;
            context = null;
        }
        return result;
    };
}</code>

Utilisation :

<code class="javascript">function something() { /* do something */ }
var one_something = once(something);

one_something(); // "do something" happens
one_something(); // nothing happens</code>

Cette fonction utilitaire renvoie une fonction qui met en cache le résultat de la première invocation et désactive les exécutions ultérieures.

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!

Déclaration:
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