--- title: 'SyntaxError: "use strict" not allowed in function with non-simple parameters' slug: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params translation_of: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params --- <div>{{jsSidebar("Errors")}}</div> <h2 id="Сообщение">Сообщение</h2> <p> </p> <pre>Edge: Cannot apply strict mode on functions with non-simple parameter list Firefox: SyntaxError: "use strict" not allowed in function with default parameter SyntaxError: "use strict" not allowed in function with rest parameter SyntaxError: "use strict" not allowed in function with destructuring parameter Chrome: SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list</pre> <p>Перевод:</p> <pre class="syntaxbox">Edge: Не удаётся применить строгий режим к функциям со списком, содержащим сложные параметры Firefox: Ошибка синтаксиса: "use strict" не допускается в функции с параметром по умолчанию Ошибка синтаксиса: "use strict" не допускается в функции с rest параметром Ошибка синтаксиса: "use strict" не допускается в функции с параметром, использующим деструктуризацию Chrome: Ошибка синтаксиса: недопустимая директива 'use strict' в функции со списком, содержащим сложные параметры </pre> <h2 id="Тип_ошибки">Тип ошибки</h2> <p>{{jsxref("SyntaxError")}}.</p> <h2 id="Что_пошло_не_так">Что пошло не так?</h2> <p>Директива <code>"use strict"</code> была использована в верхней части функции, которая имеет один из следующих параметров:<br> </p> <ul> <li>{{jsxref("функции/Default_parameters", "параметры по умолчанию", "", 1)}}</li> <li>{{jsxref("функции/rest_parameters", "остальные параметры", "", 1)}}</li> <li>{{jsxref("операторы/Destructuring_assignment", "деконструкция параметров", "", 1)}}</li> </ul> <p>Директива "use strict" не допускается в верхней части таких функций согласно спецификации ECMAScript.</p> <h2 id="Примеры">Примеры</h2> <h3 id="Функция_заявления">Функция заявления</h3> <p>В этом случае функция sum имеет параметры по умолчанию a=1 и b=2:</p> <pre class="brush: js example-bad">function sum(a = 1, b = 2) { //SyntaxError: использовать "use strict" не разрешено в функции с параметром по умолчанию 'use strict'; return a + b; } </pre> <p>Если функция должна находиться в строгом режиме, и весь скрипт или заключающая функция также в порядке, чтобы быть в строгом режиме, вы можете переместить директиву "use strict" за пределы функции:</p> <pre class="brush: js example-good">'use strict'; function sum(a = 1, b = 2) { return a + b; } </pre> <h3 id="Функция_выражения">Функция выражения</h3> <p>Выражение функции может использовать ещё один обходной путь:</p> <pre class="brush: js example-bad">var sum = function sum([a, b]) { // SyntaxError: "use strict" не допускается в функции с параметром деструктурирования 'use strict'; return a + b; }; </pre> <p>Это может быть преобразовано в следующее выражение:</p> <pre class="brush: js example-good">var sum = (function() { 'use strict'; return function sum([a, b]) { return a + b; }; })(); </pre> <h3 id="Указательная_функция">Указательная функция</h3> <p>Если функция со стрелкой должна получить доступ к переменной this, можно использовать функцию со стрелкой в качестве функции включения:</p> <pre class="brush: js example-bad">var callback = (...args) => { // SyntaxError: "use strict" не допускается в функции с параметром rest 'use strict'; return this.run(args); }; </pre> <p>Это может быть преобразовано в следующее выражение:</p> <pre class="brush: js example-good">var callback = (() => { 'use strict'; return (...args) => { return this.run(args); }; })(); </pre> <h2 id="Смотрите_также">Смотрите также</h2> <ul> <li>{{jsxref("Strict_mode", "строгий режим", "", 1)}}</li> <li>{{jsxref("Ведомости/функция", "оператор function", "", 1)}}</li> <li>{{jsxref("операторы/функции", "свободное выражение функции", "", 1)}}</li> <li>{{jsxref("функции/Default_parameters", "параметры по умолчанию", "", 1)}}</li> <li>{{jsxref("функции/rest_parameters", "остальные параметры", "", 1)}}</li> <li>{{jsxref("операторы/Destructuring_assignment", "деконструкция параметры", "", 1)}}</li> </ul>