Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Function

Baseline Widely available *

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.

L'objet Function fournit des méthodes pour les fonctions. En JavaScript, chaque fonction est en réalité un objet Function.

Constructeur

Function()

Crée un nouvel objet Function. Appeler le constructeur directement permet de créer des fonctions dynamiquement, mais cela présente des problèmes de sécurité et de performances similaires (mais bien moindres) à eval(). Cependant, contrairement à eval(), le constructeur Function crée des fonctions qui s'exécutent uniquement dans la portée globale.

Propriétés d'instance

Ces propriétés sont définies sur Function.prototype et partagées par toutes les instances de Function.

Function.prototype.arguments Obsolète Non standard

Représente les arguments passés à cette fonction. Pour les fonctions strictes, fléchées, asynchrones et génératrices, accéder à la propriété arguments déclenche une TypeError. Utilisez plutôt l'objet arguments à l'intérieur des fermetures de fonction.

Function.prototype.caller Obsolète Non standard

Représente la fonction qui a appelé cette fonction. Pour les fonctions strictes, fléchées, asynchrones et génératrices, accéder à la propriété caller déclenche une erreur de typage (TypeError).

Function.prototype.constructor

La fonction constructeur qui a créé l'objet instance. Pour les instances de Function, la valeur initiale est le constructeur Function.

Ces propriétés sont propres à chaque instance de Function.

displayName Non standard Facultatif

Le nom d'affichage de la fonction.

length

Indique le nombre d'arguments attendus par la fonction.

name

Le nom de la fonction.

prototype

Utilisé lorsque la fonction est utilisée comme constructeur avec l'opérateur new. Cela deviendra le prototype du nouvel objet.

Méthodes d'instance

Function.prototype.apply()

Appelle une fonction avec une valeur this donnée et des arguments optionnels fournis sous forme de tableau (ou d'objet semblable à un tableau).

Function.prototype.bind()

Crée une nouvelle fonction qui, lorsqu'elle est appelée, a son mot-clé this fixé à une valeur donnée, éventuellement avec une séquence d'arguments précédant ceux fournis lors de l'appel de la nouvelle fonction.

Function.prototype.call()

Appelle une fonction avec une valeur this donnée et des arguments optionnels.

Function.prototype.toString()

Retourne une chaîne de caractères représentant le code source de la fonction. Surcharge la méthode Object.prototype.toString.

Function.prototype[Symbol.hasInstance]()

Définit la procédure par défaut pour déterminer si une fonction constructeur reconnaît un objet comme étant une de ses instances. Appelée par l'opérateur instanceof.

Exemples

Différence entre l'utilisation du constructeur Function() et les déclarations de fonction

Les fonctions créées avec le constructeur Function() ne créent pas de fermetures contenant leur contexte de création ; elles sont toujours créées dans la portée globale. Lors de leur exécution, elles ne pourront accéder qu'à leurs propres variables locales et aux variables globales, elles ne pourront pas accéder aux variables de la portée dans laquelle le constructeur Function() a été appelé. Il s'agit d'un comportement différent que celui obtenu en utilisant eval() avec une expression de fonction.

js
// Crée une propriété globale avec `var`
var x = 10;

function creerFonction1() {
  var x = 20;
  return new Function("return x;"); // ce `x` fait référence au `x` global
}

function creerFonction2() {
  var x = 20;
  function f() {
    return x; // ce `x` fait référence au `x` local ci-dessus
  }
  return f;
}

var f1 = creerFonction1();
console.log(f1()); // 10
var f2 = creerFonction2();
console.log(f2()); // 20

Bien que ce code fonctionne dans les navigateurs web, f1() déclenchera une erreur ReferenceError avec Node.js, car x ne sera pas trouvé. En effet, la portée de plus haut niveau de Node n'est pas la portée globale et x sera local au module.

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-function-objects

Compatibilité des navigateurs

Voir aussi