--- title: 'SyntaxError: "use strict" no permitida en función con parámetros complejos' slug: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params tags: - Error - JavaScript - TypeError - errores translation_of: Web/JavaScript/Reference/Errors/Strict_Non_Simple_Params original_slug: Web/JavaScript/Reference/Errors/Strict_y_parámetros_complejos ---
La excepción de JavaScript: "'use strict' no permitida en función" ocurre cuando se usa una directiva "use strict" en la parte superior de una función con {{jsxref("Functions/Default_parameters", "parámetros predeterminados", "", 1)}}, {{jsxref("Functions/rest_parameters", "parámetros rest", "", 1)}} o {{jsxref("Operators/Destructuring_assignment" , "Desestructuración de parámetros", "", 1)}}.
Edge: No se puede aplicar el modo estricto en funciones con una lista de parámetros complejos Firefox: SyntaxError: "use strict" no permitido en la función con parámetro predeterminado SyntaxError: "use strict" no permitido en la función con parámetro rest SyntaxError: "use strict" no permitido en la función con parámetro de desestructuración Chrome: SyntaxError: directiva ilegal 'use strict' en función con una lista de parámetros complejos
Error{{jsxref("SyntaxError")}}.
Se escribió una directiva "use strict" en la parte superior de una función que tiene uno de los siguientes parámetros:
No está permitida una directiva "use strict" en la parte superior de dichas funciones según la especificación ECMAScript.
En este caso, la función sum tiene los parámetros predeterminados a = 1 y b = 2:
function sum(a = 1, b = 2) {
SyntaxError: 'use strict' no permitida en la función con parámetros predeterminados
'use strict';
return a + b;
}
Si la función debe estar en modo estricto, y todo el script o la función adjunta también está bien que esté en modo estricto, puedes mover la directiva "use strict" fuera de la función:
'use strict';
function sum(a = 1, b = 2) {
return a + b;
}
FunctionUna expresión function puede usar otra solución alternativa:
var sum = function sum([a, b]) {
// SyntaxError: "use strict" no permitido en función con parámetros de desestructuración
'use strict';
return a + b;
};
Esta se puede convertir a la siguiente expresión:
var sum = (function() {
'use strict';
return function sum([a, b]) {
return a + b;
};
})();
Si una función de flecha necesita acceder a la variable this, puedes usar la función de flecha como función circundante:
var callback = (...args) => {
SyntaxError: "use strict" no permitido en la función con parámetro rest
'use strict';
return this.run(args);
};
Esta se puede convertir a la siguiente expresión:
var callback = (() => {
'use strict';
return (...args) => {
return this.run(args);
};
})();