This page was translated from English by the community.Learn more and join the MDN Web Docs community.
SyntaxError: "use strict" not allowed in function with non-simple parameters
Сообщение
Edge:Cannot apply strict mode on functions with non-simple parameter listFirefox:SyntaxError: "use strict" not allowed in function with default parameterSyntaxError: "use strict" not allowed in function with rest parameterSyntaxError: "use strict" not allowed in function with destructuring parameterChrome:SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list
Перевод:
Edge:Не удаётся применить строгий режим к функциям со списком, содержащим сложные параметрыFirefox:Ошибка синтаксиса: "use strict" не допускается в функции с параметром по умолчаниюОшибка синтаксиса: "use strict" не допускается в функции с rest параметромОшибка синтаксиса: "use strict" не допускается в функции с параметром, использующим деструктуризациюChrome:Ошибка синтаксиса: недопустимая директива 'use strict' в функции со списком, содержащим сложные параметры
In this article
Тип ошибки
Что пошло не так?
Директива"use strict" была использована в верхней части функции, которая имеет один из следующих параметров:
Директива "use strict" не допускается в верхней части таких функций согласно спецификации ECMAScript.
Примеры
>Функция заявления
В этом случае функция sum имеет параметры по умолчанию a=1 и b=2:
function sum(a = 1, b = 2) { //SyntaxError: использовать "use strict" не разрешено в функции с параметром по умолчанию 'use strict'; return a + b;}Если функция должна находиться в строгом режиме, и весь скрипт или заключающая функция также в порядке, чтобы быть в строгом режиме, вы можете переместить директиву "use strict" за пределы функции:
"use strict";function sum(a = 1, b = 2) { return a + b;}Функция выражения
Выражение функции может использовать ещё один обходной путь:
var sum = function sum([a, b]) { // SyntaxError: "use strict" не допускается в функции с параметром деструктурирования 'use strict'; return a + b;};Это может быть преобразовано в следующее выражение:
var sum = (function () { "use strict"; return function sum([a, b]) { return a + b; };})();Указательная функция
Если функция со стрелкой должна получить доступ к переменной this, можно использовать функцию со стрелкой в качестве функции включения:
var callback = (...args) => { // SyntaxError: "use strict" не допускается в функции с параметром rest 'use strict'; return this.run(args);};Это может быть преобразовано в следующее выражение:
var callback = (() => { "use strict"; return (...args) => { return this.run(args); };})();