Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

SyntaxError: "use strict" not allowed in function with "x" parameter

Message

SyntaxError: "use strict" not allowed in function with "x" parameter (Firefox)
SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list (Chrome)

Type d'erreur

SyntaxError.

Quel est le problème ?

"use strict" apparaît au début d'une fonction qui possède l'un des paramètres suivants :

"use strict" ne peut pas être utilisé pour de telles fonctions.

Exemples

Déclaration de fonction

Dans l'exemple qui suit, la fonction somme possède deux paramètres par défaut a=1 et b=2.

function somme(a = 1, b = 2) {
  // SyntaxError: "use strict" not allowed in function with default parameter
  "use strict";
  return a + b;
}

Si on veut que la fonction soit en mode strict et que le script entier ou que la fonction englobante peut être en mode strict, il suffira de déplacer l'instruction "use strict" en dehors du corps de la méthode.

"use strict";
function somme(a = 1, b = 2) {
  return a + b;
}

Expression de fonction

Il est également possible d'utiliser les expressions de fonction pour résoudre ce problème :

var somme = function somme([a, b]) {
  // SyntaxError: "use strict" not allowed in function with destructuring parameter
  "use strict";
  return a + b;
};

On peut convertir le fragment de code précédent avec l'expression suivante :

var somme = (function() {
  "use strict";
  return function somme([a, b]) {
    return a + b;
  };
})();

Fonction fléchée

Si on a une fonction fléchée qui doit accéder à la variable this on peut utiliser une fonction fléchée comme fonction englobante :

var callback = (...args) => {
  // SyntaxError: "use strict" not allowed in function with rest parameter
  "use strict";
  return this.run(args);
};

This can be converted into following expression.

var callback = (() => {
  "use strict";
  return (...args) => {
    return this.run(args);
  };
})();

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,