SyntaxError: "use strict" nicht erlaubt in Funktion mit nicht einfachen Parametern
Die JavaScript-Ausnahme ""use strict"
not allowed in function" tritt auf,
wenn eine "use strict"
-Direktive am Anfang einer Funktion verwendet wird, die
Standardparameter,
Restparameter oder
Destrukturierungsparameter enthält.
Meldung
SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list (V8-based) SyntaxError: "use strict" not allowed in function with default parameter (Firefox) SyntaxError: "use strict" not allowed in function with rest parameter (Firefox) SyntaxError: "use strict" not allowed in function with destructuring parameter (Firefox) SyntaxError: 'use strict' directive not allowed inside a function with a non-simple parameter list. (Safari)
Fehlertyp
Was ist schiefgelaufen?
Eine "use strict"
-Direktive wird am Anfang einer Funktion geschrieben, die einen der folgenden Parameter hat:
Eine "use strict"
-Direktive ist gemäß der ECMAScript-Spezifikation am Anfang solcher Funktionen nicht erlaubt.
Beispiele
Funktionsdeklaration
In diesem Fall hat die Funktion sum
die Standardparameter a=1
und
b=2
:
function sum(a = 1, b = 2) {
// SyntaxError: "use strict" not allowed in function with default parameter
"use strict";
return a + b;
}
Wenn die Funktion im Strict-Modus sein soll und auch das gesamte Skript oder umschließende Funktion im Strict-Modus sein darf, können Sie die
"use strict"
-Direktive außerhalb der Funktion platzieren:
"use strict";
function sum(a = 1, b = 2) {
return a + b;
}
Funktionsausdruck
Ein Funktionsausdruck kann eine weitere Lösung nutzen:
const sum = function sum([a, b]) {
// SyntaxError: "use strict" not allowed in function with destructuring parameter
"use strict";
return a + b;
};
Dies kann in den folgenden Ausdruck umgewandelt werden:
const sum = (function () {
"use strict";
return function sum([a, b]) {
return a + b;
};
})();
Pfeilfunktion
Falls eine Pfeilfunktion auf die Variable this
zugreifen muss, können Sie die Pfeilfunktion als umschließende Funktion verwenden:
const callback = (...args) => {
// SyntaxError: "use strict" not allowed in function with rest parameter
"use strict";
return this.run(args);
};
Dies kann in den folgenden Ausdruck umgewandelt werden:
const callback = (() => {
"use strict";
return (...args) => {
return this.run(args);
};
})();