108 votes

Puis-je nommer une fonction JavaScript et l'exécuter immédiatement ?

J'en ai plusieurs :

function addEventsAndStuff() {
  // bla bla
}
addEventsAndStuff();

function sendStuffToServer() {
  // send stuff
  // get HTML in response
  // replace DOM
  // add events:
  addEventsAndStuff();
}

Il est nécessaire d'ajouter à nouveau les événements parce que le DOM a changé et que les événements précédemment attachés ont disparu. Puisqu'ils doivent également être attachés initialement (duh), ils sont dans une belle fonction pour être DRY.

Il n'y a rien de mal à cette configuration (ou n'est-ce pas ?), mais puis-je l'adoucir un peu ? J'aimerais créer le addEventsAndStuff() et l'appeler immédiatement, afin de ne pas donner l'impression d'être un amateur.

Les deux suivants répondent par une erreur de syntaxe :

function addEventsAndStuff() {
  alert('oele');
}();

(function addEventsAndStuff() {
  alert('oele');
})();

Y a-t-il des preneurs ?

4voto

Alberto Points 365

C'est encore plus simple avec ES6 :

var result = ((a, b) => `${a} ${b}`)('Hello','World')
// result = "Hello World"
var result2 = (a => a*2)(5)
// result2 = 10
var result3 = (concat_two = (a, b) => `${a} ${b}`)('Hello','World')
// result3 = "Hello World"
concat_two("My name", "is Foo")
// "My name is Foo"

2voto

Rulexec Points 783

Essayez de faire comme cela :

var addEventsAndStuff = (function(){
    var func = function(){
        alert('ole!');
    };
    func();
    return func;
})();

2voto

Lobo Points 3923

Si vous souhaitez créer une fonction et l'exécuter immédiatement -

// this will create as well as execute the function a()
(a=function a() {alert("test");})();

// this will execute the function a() i.e. alert("test")
a();

0voto

Pietro Points 21

Pour ma candidature, j'ai opté pour la méthode la plus simple. Il me suffit de lancer une fonction dès le chargement de la page et de la réutiliser dans plusieurs autres sections du code.

function doMyFunctionNow(){
    //for example change the color of a div
}

var flag = true;
if(flag){
    doMyFunctionNow();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X