no-dupe-else-if

禁止 if-else-if 链中的重复条件

配置文件 中的 "extends": "eslint:recommended" 属性启用了该规则

if-else-if 链通常用于根据特定条件只执行几个可能分支中的一个分支(或最多一个分支)的情况。

if (a) {
    foo();
} else if (b) {
    bar();
} else if (c) {
    baz();
}

同一链中的两个相同的测试条件几乎总是代码中的错误。除非表达式中有副作用,否则重复项的 truefalse 值将与链中较早的相同表达式相同,这意味着它的分支永远不会执行。

if (a) {
    foo();
} else if (b) {
    bar();
} else if (b) {
    baz();
}

在上面的例子中,baz() 永远不能执行。显然,baz() 只能在 b 评估为 true 时执行,但在这种情况下,bar() 将被执行,因为它在链中更早。

规则详情

qsGI1Wc6HJrkR6syY0zy6eT4SkURzTQTTOspM361YZeuVwz8NAXdFkgbLsLLQs+BHpmMeL6yjfdi5Q7NCscdQUi5bMfQ+29+d+W2ORwZqkc=

KIjVZ8jbyN1kWo441FXYIh3AmcQhCDgs/8OlFVGexGn4OCCKsdfcgNWXdLQQbb4u

/*eslint no-dupe-else-if: "error"*/

if (isSomething(x)) {
    foo();
} else if (isSomething(x)) {
    bar();
}

if (a) {
    foo();
} else if (b) {
    bar();
} else if (c && d) {
    baz();
} else if (c && d) {
    quux();
} else {
    quuux();
}

if (n === 1) {
    foo();
} else if (n === 2) {
    bar();
} else if (n === 3) {
    baz();
} else if (n === 2) {
    quux();
} else if (n === 5) {
    quuux();
}

AoqXtTV6Q8irP1mRQNh34rATVScSSkZAU175f14ev6145njeerHH1txMZ4OQcdup

/*eslint no-dupe-else-if: "error"*/

if (isSomething(x)) {
    foo();
} else if (isSomethingElse(x)) {
    bar();
}

if (a) {
    foo();
} else if (b) {
    bar();
} else if (c && d) {
    baz();
} else if (c && e) {
    quux();
} else {
    quuux();
}

if (n === 1) {
    foo();
} else if (n === 2) {
    bar();
} else if (n === 3) {
    baz();
} else if (n === 4) {
    quux();
} else if (n === 5) {
    quuux();
}

bVjVCBLNucFz80Lr+MwmfP+/+ZNlxAcoMgZ6Eoz5bn3/K4K+bwESTmD/wJC4+z8RbfTq808tM6M+0uzAuEoyQ5EMi3W2vNTy7mpGKJSkCkspnVkV75kj4RX9Cvn6L2ZMHnyQet6hTw6vutBZmoVTuRKUpxGMx9UYHIsLGHcme+yRaJQmySI1RsF+5xmyJ9sTnTWyNx3BF0PYK2/ndHYQXF6hIJU3Kwez3KM2AsBv9ho=

ULqOZuDWwpu0AmaYcNOAsqaSelrjtXkl4oEgzEsjevURqxRjI1ZUyCR8tt1HyCrs

/*eslint no-dupe-else-if: "error"*/

if (a || b) {
    foo();
} else if (a) {
    bar();
}

if (a) {
    foo();
} else if (b) {
    bar();
} else if (a || b) {
    baz();
}

if (a) {
    foo();
} else if (a && b) {
    bar();
}

if (a && b) {
    foo();
} else if (a && b && c) {
    bar();
}

if (a || b) {
    foo();
} else if (b && c) {
    bar();
}

if (a) {
    foo();
} else if (b && c) {
    bar();
} else if (d && (c && e && b || a)) {
    baz();
}

vkdjzJwr9+Ff5bnPWWb6q/cneMLXBcudXxHncBzZ3uZYZ/5NjxYOVHdchAU9JNpB24vbJ49+fKXVmlA/csu9zzNRe2ve3oGK1/7IuztceofBORHHeIJJxfx+ZFOePsDmEY+mphKo1f+qofRXspybLJffPCY03ZWVmlB7XMams77T8Zr7oQSPoZ2bz/yZrp+K

if (a) {
    if (a) {
        foo();
    }
}

if (a) {
    foo();
} else {
    if (a) {
        bar();
    }
}

何时不使用

8zUmxrYVq6hg8df4wbx+Yn2VMNI4pVRZCQbnsihQy4/vD/zth3UNfNa1rdENDscn/ocaag1ImEMecwgcgNflqEFdlUWPJrec8i6D61scbPxx7KyRgNFA5n/aHIjYbd6alIWB2JyaJgUoob262McXh242Sc2bJgJMYiuCbXJBVRjCANC1HwDUe8lIGEJ25CXuZ6q3TGJ64LxlyL9LUuoqmWN2NKuuv+FfJ1h8d86mdy2aC+qDjWr+ZUSEPIfMU0RF