Skip to content

noRedundantUseStrict (since v1.0.0)

Diagnostic Category: lint/suspicious/noRedundantUseStrict

Prevents from having redundant "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"
}

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

Note that the leading trivia, e.g., comments or newlines preceding the redundant "use strict" will also be removed. So that comment directives won’t be transferred to a wrong place.

"use strict";
function foo() {
"use strict";
}
suspicious/noRedundantUseStrict.js: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";
    4 3  }
    5 4  
  
"use strict";
"use strict";
function foo() {
}
suspicious/noRedundantUseStrict.js: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  
    4 3  function foo() {
  
function foo() {
"use strict";
"use strict";
}
suspicious/noRedundantUseStrict.js: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";
    4 3  }
    5 4  
  
class C1 {
test() {
"use strict";
}
}
suspicious/noRedundantUseStrict.js: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  	}
    5 4  }
  
const C2 = class {
test() {
"use strict";
}
};
suspicious/noRedundantUseStrict.js: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  	}
    5 4  };
  
function foo() {
}
function foo() {
"use strict";
}
function bar() {
"use strict";
}