Skip to content

noRedundantUseStrict

¥Summary

¥How to configure

biome.json
{
"linter": {
"rules": {
"suspicious": {
"noRedundantUseStrict": "error"
}
}
}
}

¥Description

防止有多余的 "use strict"。

¥Prevents from having redundant "use strict".

在 .mjs 文件中,或在 package.json 将库定义为模块的项目内的 .js 文件中,不需要指令 "use strict":

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

{
"type": "module"
}

相反,.cjs 文件被视为 “scripts”,指令 "use strict" 被接受和建议。

¥Instead, .cjs files are considered “scripts” and the directive "use strict" is accepted and advised.

¥Examples

¥Invalid

"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.

3 │ ·→ “use·strict”;
│ -------------
"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.

2 │ “use·strict”;
│ -------------
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.

3 │ “use·strict”;
│ -------------
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.

3 │ → → “use·strict”;
│ -------------
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.

3 │ → → “use·strict”;
│ -------------

¥Valid

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

¥Related links