Spec-Zone.ru › JavaScript

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)

Тип ошибки

SyntaxError.

Что пошло не так?

Директива "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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API