How can I achieve an elseif in a JavaScript condition?
In JavaScript's if-then-else
there is technically no elseif
branch.
But it works if you write it this way:
if (condition) {
} else if (other_condition) {
} else {
}
To make it obvious what is really happening you can expand the above code using an additional pair of {
and }
:
if (condition) {
} else {
if (other_condition) {
} else {
}
}
In the first example we're using some implicit JS behavior about {}
uses. We can omit these curly braces if there is only one statement inside. Which is the case in this construct, because the inner if-then-else
only counts as one statment. The truth is that those are 2 nested if-statements. And not an if-statement with 2 branches, as it may appear on first sight.
This way it resembles the elseif
that is present in other languages.
It is a question of style and preference which way you use it.
Just add a space:
if (...) {
} else if (...) {
} else {
}
You could use this syntax which is functionally equivalent:
switch (true) {
case condition1:
//e.g. if (condition1 === true)
break;
case condition2:
//e.g. elseif (condition2 === true)
break;
default:
//e.g. else
}
This works because each condition
is fully evaluated before comparison with the switch
value, so the first one that evaluates to true
will match and its branch will execute. Subsequent branches will not execute, provided you remember to use break
.
Note that strict comparison is used, so a branch whose condition
is merely "truthy" will not be executed. You can cast a truthy value to true
with double negation: !!condition
.
switch (true)
doesn't even make sense.
true
then that case will be met - exactly like else if
.
if([]) alert('a')
produces the alert but switch(true){case []:alert('a')}
doesn't. That's because []
is a truthy value but not equal to true
, as @zwol explained in this edit.
Actually, technically when indented properly, it would be:
if (condition) {
...
} else {
if (condition) {
...
} else {
...
}
}
There is no else if
, strictly speaking.
(Update: Of course, as pointed out, the above is not considered good style.)
if (condition1) { ... } else if (condition2) { ... } else { ... }
.
else if
you are actually omitting the optional block {...}
. I was referencing based on EMCAScript and MDN..
else { if ... }
is good style.
if ( 100 < 500 ) {
//any action
}
else if ( 100 > 500 ){
//any another action
}
Easy, use space
Conditional statements are used to perform different actions based on different conditions.
Use if
to specify a block of code to be executed, if a specified condition is true
Use else
to specify a block of code to be executed, if the same condition is false
Use else if
to specify a new condition to test, if the first condition is false
x = 10;
if(x > 100 ) console.log('over 100')
else if (x > 90 ) console.log('over 90')
else if (x > 50 ) console.log('over 50')
else if (x > 9 ) console.log('over 9')
else console.log('lower 9')
You are missing a space between else
and if
It should be else if
instead of elseif
if(condition)
{
}
else if(condition)
{
}
else
{
}
Success story sharing
if
andelse
there really is no need ofelseif
.elseif
, perl haselsif
(I think), and Python haselif
.. that kind of annoyed me at first, but... I guess it's kind of cute. It does serve a slight purpose in Python and PHP though, because it wouldn't work with their colon syntax otherwise.if
/else
blocks, but people are encouraged to use them, so I can understand why this looks incorrect to a new user.