The comma operator (,) evaluates its operands, from left to right, and returns the second one. That's useful in some situations, but just wrong in a switchcase. You may think you're compactly handling multiple values in the case, but only the last one in the comma-list will ever be handled. The rest will fall through to the default.
Similarly, the logical OR operator (||) will not work in a switchcase, only the first argument will be considered at execution time.
Noncompliant Code Example
switch a {
case 1,2: // Noncompliant; only 2 is ever handled by this case
doTheThing(a);
case 3 || 4: // Noncompliant; only '3' is handled
doThatThing(a);
case 5:
doTheOtherThing(a);
default:
console.log("Neener, neener!"); // this happens when a==1 or a == 4
}
Compliant Solution
switch a {
case 1:
case 2:
doTheThing(a);
case 3:
case 4:
doThatThing(a);
case 5:
doTheOtherThing(a);
default:
console.log("Neener, neener!");
}
The comma operator (
,
) evaluates its operands, from left to right, and returns the second one. That's useful in some situations, but just wrong in aswitch
case
. You may think you're compactly handling multiple values in the case, but only the last one in the comma-list will ever be handled. The rest will fall through to the default.Similarly, the logical OR operator (
||
) will not work in aswitch
case
, only the first argument will be considered at execution time.Noncompliant Code Example
Compliant Solution
https://github.com/wazuh/wazuh-api/blob/7cd5ef15f668f52324c7f8ebf8677fb1e1106aaf/helpers/logger.js#L41-L59