Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
Is it safe to assume strict comparison in a JavaScript switch statement?
JavaScript switch statements use strict comparison (===) to match cases, not loose comparison (==). This means both value and type must match exactly.
Understanding Switch Comparison
Let's test this with a simple example to see which case matches:
<script>
switch(1) {
case '1':
alert('Switch comparison: Not Strict.');
break;
case 1:
alert('Switch comparison: Strict.');
break;
default:
alert('Default');
}
</script>
This will display "Switch comparison: Strict." because the number 1 matches case 1 exactly, but not the string '1'.
Type Coercion Example
Here's another example showing how switch handles different types:
function testSwitch(value) {
console.log(`Testing value: ${value} (type: ${typeof value})`);
switch(value) {
case 0:
console.log('Matched number 0');
break;
case '0':
console.log('Matched string "0"');
break;
case false:
console.log('Matched boolean false');
break;
default:
console.log('No match found');
}
console.log('---');
}
testSwitch(0); // number
testSwitch('0'); // string
testSwitch(false); // boolean
testSwitch(''); // empty string
Testing value: 0 (type: number) Matched number 0 --- Testing value: 0 (type: string) Matched string "0" --- Testing value: false (type: boolean) Matched boolean false --- Testing value: (type: string) No match found ---
Comparison: Switch vs If-Else
| Statement | Comparison Type | Example |
|---|---|---|
| switch | Strict (===) | case 1: matches only number 1 |
| if (value == case) | Loose (==) | if (1 == '1') is true |
| if (value === case) | Strict (===) | if (1 === '1') is false |
Practical Example
function handleUserInput(input) {
switch(input) {
case 1:
console.log('You entered the number 1');
break;
case '1':
console.log('You entered the string "1"');
break;
case true:
console.log('You entered boolean true');
break;
default:
console.log('Unexpected input type');
}
}
handleUserInput(1); // number
handleUserInput('1'); // string
handleUserInput(true); // boolean
handleUserInput('true'); // string (not boolean)
You entered the number 1 You entered the string "1" You entered boolean true Unexpected input type
Conclusion
Yes, it's safe to assume strict comparison in JavaScript switch statements. Switch always uses === (strict equality), comparing both value and type. This behavior is consistent and predictable across all JavaScript environments.
Advertisements
