Disallow unreachable code
このページは日本語には対応しておりません。随時翻訳に取り組んでいます。
翻訳に関してご質問やご意見ございましたら、
お気軽にご連絡ください。
ID: javascript-best-practices/no-unreachable
Language: JavaScript
Severity: Warning
Category: Best Practices
Description
In JavaScript, any code following a return
, throw
, continue
, or break
statement is unreachable and will never be executed. The only exception here is declarations, which are valid because of JavaScript Hoisting.
Non-Compliant Code Examples
function fn() {
x = 1;
return x;
x = 3; // this will never execute
}
class C extends B {
#x; // this will never be added to instances
constructor() {
return {};
}
}
function foo() {
return true;
console.log("done");
}
function bar() {
throw new Error("Oops!");
console.log("done");
}
function loop() {
while(value) {
break;
console.log("done");
}
}
function error() {
throw new Error("Oops!");
console.log("done");
}
function baz() {
if (Math.random() < 0.5) {
return;
} else {
throw new Error();
}
console.log("done");
}
function anotherLoop() {
for (;;) {}
console.log("done");
}
switch (foo) {
case 1:
break;
x = 2;
}
class C extends B {
#x; // unreachable
#y = 1; // unreachable
a; // unreachable
b = 1; // unreachable
constructor() {
return {};
}
}
Compliant Code Examples
function foo() {
return bar();
function bar() {
return 1;
}
}
function bar() {
return x;
var x;
}
switch (foo) {
case 1:
break;
var x;
}
class D extends B {
#x;
#y = 1;
a;
b = 1;
constructor() {
super();
}
}
class E extends B {
#x;
#y = 1;
a;
b = 1;
// implicit constructor always calls `super()`
}
class F extends B {
static #x;
static #y = 1;
static a;
static b = 1;
constructor() {
return {};
}
}