--- 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; }
Function
Una 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); }; })();