Skip to content

noRedundantUseStrict (JavaScript)

Language JavaScript (and super languages)
biome.json
{
"linter": {
"rules": {
"suspicious": {
"noRedundantUseStrict": "error"
}
}
}
}

Prevents from having redundant "use strict".

The directive "use strict" isn’t needed in an ESM module. This includes .mjs files, or .js files inside projects where the package.json defines the library as a module:

{
"type": "module"
}

If the type is undefined, ESM module is assumed. CommonJS files (.cjs, or .js files inside a project with "type": "commonjs") are in non-strict mode. For them, the directive "use strict" is accepted and advised.

"use strict";
function foo() {
"use strict";
}
code-block.cjs:3:3 lint/suspicious/noRedundantUseStrict  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Redundant use strict directive.

1 │ "use strict";
2 │ function foo() {
> 3 │ "use strict";
^^^^^^^^^^^^^
4 │ }
5 │

This outer use strict directive already enables strict mode.

> 1 │ "use strict";
^^^^^^^^^^^^^
2 │ function foo() {
3 │ "use strict";

Safe fix: Remove the redundant use strict directive.

1 1 "use strict";
2 2 function foo() {
3 - ·"use·strict";
3+ ·
4 4 }
5 5

"use strict";
"use strict";
function foo() {
}
code-block.cjs:2:1 lint/suspicious/noRedundantUseStrict  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Redundant use strict directive.

1 │ "use strict";
> 2 │ "use strict";
^^^^^^^^^^^^^
3 │
4 │ function foo() {

This outer use strict directive already enables strict mode.

> 1 │ "use strict";
^^^^^^^^^^^^^
2 │ "use strict";
3 │

Safe fix: Remove the redundant use strict directive.

1 1 "use strict";
2 - "use·strict";
3 2
3+
4 4 function foo() {
5 5

function foo() {
"use strict";
"use strict";
}
code-block.cjs:3:1 lint/suspicious/noRedundantUseStrict  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Redundant use strict directive.

1 │ function foo() {
2 │ "use strict";
> 3 │ "use strict";
^^^^^^^^^^^^^
4 │ }
5 │

This outer use strict directive already enables strict mode.

1 │ function foo() {
> 2 │ "use strict";
^^^^^^^^^^^^^
3 │ "use strict";
4 │ }

Safe fix: Remove the redundant use strict directive.

1 1 function foo() {
2 2 "use strict";
3 - "use·strict";
3+
4 4 }
5 5

class C1 {
test() {
"use strict";
}
}
code-block.cjs:3:3 lint/suspicious/noRedundantUseStrict  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Redundant use strict directive.

1 │ class C1 {
2 │ test() {
> 3 │ "use strict";
^^^^^^^^^^^^^
4 │ }
5 │ }

All parts of a class's body are already in strict mode.

> 1 │ class C1 {
^^^^^^^^^^
> 2 │ test() {
> 3 │ "use strict";
> 4 │ }
> 5 │ }
^
6 │

Safe fix: Remove the redundant use strict directive.

1 1 class C1 {
2 2 test() {
3 - "use·strict";
4 - }
3+
4+ }
5 5 }
6 6

const C2 = class {
test() {
"use strict";
}
};
code-block.cjs:3:3 lint/suspicious/noRedundantUseStrict  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Redundant use strict directive.

1 │ const C2 = class {
2 │ test() {
> 3 │ "use strict";
^^^^^^^^^^^^^
4 │ }
5 │ };

All parts of a class's body are already in strict mode.

> 1 │ const C2 = class {
^^^^^^^
> 2 │ test() {
> 3 │ "use strict";
> 4 │ }
> 5 │ };
^
6 │

Safe fix: Remove the redundant use strict directive.

1 1 const C2 = class {
2 2 test() {
3 - "use·strict";
4 - }
3+
4+ }
5 5 };
6 6

function foo() {
}
function foo() {
"use strict";
}
function bar() {
"use strict";
}