]> git.proxmox.com Git - pve-eslint.git/blob - eslint/docs/src/rules/no-duplicate-case.md
import 8.23.1 source
[pve-eslint.git] / eslint / docs / src / rules / no-duplicate-case.md
1 ---
2 title: no-duplicate-case
3 layout: doc
4 rule_type: problem
5 ---
6
7
8
9 If a `switch` statement has duplicate test expressions in `case` clauses, it is likely that a programmer copied a `case` clause but forgot to change the test expression.
10
11 ## Rule Details
12
13 This rule disallows duplicate test expressions in `case` clauses of `switch` statements.
14
15 Examples of **incorrect** code for this rule:
16
17 :::incorrect
18
19 ```js
20 /*eslint no-duplicate-case: "error"*/
21
22 var a = 1,
23 one = 1;
24
25 switch (a) {
26 case 1:
27 break;
28 case 2:
29 break;
30 case 1: // duplicate test expression
31 break;
32 default:
33 break;
34 }
35
36 switch (a) {
37 case one:
38 break;
39 case 2:
40 break;
41 case one: // duplicate test expression
42 break;
43 default:
44 break;
45 }
46
47 switch (a) {
48 case "1":
49 break;
50 case "2":
51 break;
52 case "1": // duplicate test expression
53 break;
54 default:
55 break;
56 }
57 ```
58
59 :::
60
61 Examples of **correct** code for this rule:
62
63 :::correct
64
65 ```js
66 /*eslint no-duplicate-case: "error"*/
67
68 var a = 1,
69 one = 1;
70
71 switch (a) {
72 case 1:
73 break;
74 case 2:
75 break;
76 case 3:
77 break;
78 default:
79 break;
80 }
81
82 switch (a) {
83 case one:
84 break;
85 case 2:
86 break;
87 case 3:
88 break;
89 default:
90 break;
91 }
92
93 switch (a) {
94 case "1":
95 break;
96 case "2":
97 break;
98 case "3":
99 break;
100 default:
101 break;
102 }
103 ```
104
105 :::
106
107 ## When Not To Use It
108
109 In rare cases where identical test expressions in `case` clauses produce different values, which necessarily means that the expressions are causing and relying on side effects, you will have to disable this rule.
110
111 ```js
112 switch (a) {
113 case i++:
114 foo();
115 break;
116 case i++: // eslint-disable-line no-duplicate-case
117 bar();
118 break;
119 }
120 ```