4 votes

Est-il possible de rendre une variable égale à une fonction sans utiliser une enceinte ?

En JavaScript, vous pouvez définir une variable égale à une méthode comme ceci :

variable = function () { alert("My name is bob"); };

Ou comme ça :

function SayMyName() {
   alert("My name is bob");
}
variable = SayMyName;

Vous pouvez également entourer une fonction d'arguments comme suit :

function SayMyName(name) {
   alert("My name is "+ name);
}
variable = function () { SayMyName("bob"); };

Mais essayer de stocker une variable de la manière suivante appellera la fonction, et ne la stockera pas comme une variable :

function SayMyName(name) {
   alert("My name is "+ name);
}
variable = SayMyName("bob");

Il existait un moyen astucieux de contourner ce problème en utilisant [callee][1], mais callee est déprécié et ne fonctionne plus sur la plupart des navigateurs modernes.

Existe-t-il un moyen de rendre une variable égale à une fonction avec des arguments ? sans en utilisant une enceinte ?

5voto

Blender Points 114729

Ne pouvez-vous pas utiliser une fonction anonyme imbriquée pour cela ?

var variable = function(name) {
  return function() {
    alert('My name is ' + name);
  };
};

En l'appelant, vous obtenez le résultat souhaité :

var test = variable('bob');
test(); // Alerts "My name is bob"

4voto

hugomg Points 29789

Vous pouvez utiliser le bind pour fixer certains paramètres

var variable = SayMyName.bind(null, "bob");

Cependant, cela ne fonctionne pas dans IE <= 8, vous devrez donc utiliser un remplacement similaire ou un polyfil dans ce cas.

0voto

Japple Points 905

Vous pouvez renvoyer une fonction, comme :

function SayMyName(x) { return function() { alert("My name is Bob.");}};

var x = SayMyName('bob');
x();

0voto

mikevoermans Points 2358
var name = (function sayMyName(name) {
    return alert('My name is: ' + name);
});
name('Mike');​​​​​

-1voto

David Alvarez Points 1
public class ToyProgram{

    public static void main(String[] args){
        String funcCallVar = aFunc();
        System.out.println(funcCallVar);
    }
    public static String aFunc(){
        String aVariable = "yes you can set a variale equal to a function";
        return aVariable;
    }
}

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