SyntaxError: Malformed formal parameter

Message

SyntaxError: Expected {x} (Edge)
SyntaxError: malformed formal parameter (Firefox)

Type d'erreur

Quel est le problème ?

La méthode Function() a été utilisée avec au moins deux arguments. Le dernier argument correspond au code source de la nouvelle fonction qui est créée. Les autres arguments sont la liste des arguments passés à la fonction.

C'est cette liste d'arguments qui est, pour une certaine raison, invalide. Il s'agit peut-être d'un mot-clé (if ou var par exemple) utilisé comme un nom d'argument, ou d'un signe de ponctuation mal placé. Il peut également s'agir d'une valeur invalide comme un nombre ou un objet.

OK mais pourquoi cette formulation étrange ?

En effet, "Formal parameter" est une manière étrange de dire « argument de fonction ». Le mot "malformed" (malformé) est utilisé car les ingénieurs travaillant sur Firefox engineers apprécient énormément les romans gothiques du XIXe.

Examples

Exemples invalides

var f = Function("x y", "return x + y;");
// SyntaxError (virgule manquante)

var f = Function("x,", "return x;");
// SyntaxError (virgule mal placée)

var f = Function(37, "console.log('OK')");
// SyntaxError (des nombres ne peuvent être des noms)

Exemples valides

 // Ponctuation correcte
var f = Function("x, y", "return x + y;");

var f = Function("x", "return x;");

// Voici une alternative plus rapide
// si vous pouvez éviter Function
var f = function (x) { return x; };

Voir aussi