Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

SyntaxError: "use strict" not allowed in function with non-simple parameters

The JavaScript exception ""use strict" not allowed in function" occurswhen a"use strict" directive is used at the top of a function withdefault parameters,rest parameters, ordestructuring parameters.

Message

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)

Error type

What went wrong?

A"use strict" directive is written at the top of a function that has oneof the following parameters:

A"use strict" directive is not allowed at the top of such functions perthe ECMAScript specification.

Examples

Function statement

In this case, the functionsum has default parametersa=1 andb=2:

js
function sum(a = 1, b = 2) {  // SyntaxError: "use strict" not allowed in function with default parameter  "use strict";  return a + b;}

If the function should be instrict mode, and theentire script or enclosing function is also okay to be in strict mode, you can move the"use strict" directive outside of the function:

js
"use strict";function sum(a = 1, b = 2) {  return a + b;}

Function expression

A function expression can use yet another workaround:

js
const sum = function sum([a, b]) {  // SyntaxError: "use strict" not allowed in function with destructuring parameter  "use strict";  return a + b;};

This can be converted to the following expression:

js
const sum = (function () {  "use strict";  return function sum([a, b]) {    return a + b;  };})();

Arrow function

If an arrow function needs to access thethis variable, you can use thearrow function as the enclosing function:

js
const callback = (...args) => {  // SyntaxError: "use strict" not allowed in function with rest parameter  "use strict";  return this.run(args);};

This can be converted to the following expression:

js
const callback = (() => {  "use strict";  return (...args) => this.run(args);})();

See also

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp