SyntaxError: "use strict" не разрешен в функции с не-простыми параметрами
Исключение JavaScript ""use strict" не разрешено в функции" возникает, когда директива "use strict" используется в начале функции с параметрами по умолчанию, остаточными параметрами или деструктурирующими параметрами.
Сообщение
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)
Тип ошибки
Что пошло не так?
Директива "use strict" записана в начале функции, которая имеет один из следующих параметров:
Директива "use strict" не разрешена в начале таких функций согласно спецификации ECMAScript.
Примеры
Объявление функции
В этом случае функция sum имеет параметры по умолчанию a=1 и b=2:
function sum(a = 1, b = 2) {
// SyntaxError: "use strict" not allowed in function with default parameter
"use strict";
return a + b;
}
Если функция должна быть в строгом режиме, и весь скрипт или окружающая функция также могут быть в строгом режиме, вы можете переместить директиву "use strict" за пределы функции:
"use strict";
function sum(a = 1, b = 2) {
return a + b;
}
Функциональное выражение
Функциональное выражение может использовать еще одно обходное решение:
const sum = function sum([a, b]) {
// SyntaxError: "use strict" not allowed in function with destructuring parameter
"use strict";
return a + b;
};
Это может быть преобразовано в следующее выражение:
const sum = (function () {
"use strict";
return function sum([a, b]) {
return a + b;
};
})();
Стрелочная функция
Если стрелочной функции нужен доступ к переменной this, вы можете использовать стрелочную функцию в качестве окружающей функции:
const callback = (...args) => {
// SyntaxError: "use strict" not allowed in function with rest parameter
"use strict";
return this.run(args);
};
Это может быть преобразовано в следующее выражение:
const callback = (() => {
"use strict";
return (...args) => this.run(args);
})();
См. также
- Строгий режим
- Объявление функции
- Функциональное выражение
- Параметры по умолчанию
- Остаточные параметры
- Деструктурирующие параметры
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Strict_non_simple_params