You are here: irt.org | FAQ | JavaScript | Misc | Q772 [ previous next ]
It depends. The if statement is fundamentally made up of two parts:
if (expression)
statementThe if/else statement is:
if (expression)
statement1
else
statement2Now, the statement can either be a single JavaScript statement:
if (expression)
alert('true')
else
alert('false)or made up of multiple JavaScript statements - in which case they must be enclosed within braces:
if (expression) {
alert('this')
alert('is')
alert('true')
}
else {
alert('this')
alert('is')
alert('false')
}Note that the multiple JavaScript statements when enclosed in braces are equivalent to a single statement, e.g.
{
alert('this')
alert('is')
alert('true')
}is equivalent to:
statement1
When nesting if statements, you need to take more care, as in the following, the result s may not be as you might expect:
if (expression1)
if (expression2)
statement1
else
statement2The else statement actually forms part of the inner if statement. It would have better to write this as:
if (expression1) {
if (expression2)
statement1
}
else
statement2or, even:
if (expression1) {
if (expression2
statement1
else
statement2
}depending on which version is the correct one for what you require.
The following example works perfectly well:
<SCRIPT LANGUAGE = 'JavaScript'><!--
var date = new Date();
var hours = date.getHours();
if ( (hours < 6) || (hours >= 22) )
document.write("Good Night")
else if ( (hours >= 19) && (hours < 22) )
document.write("Good Evening")
else if ( (hours >= 6) && (hours < 9) )
document.write("Good Morning")
else
document.write("Good Day");
//--></SCRIPT>but could be rewritten for clarity using (obsolete) braces around the single statements:
<SCRIPT LANGUAGE = 'JavaScript'><!--
var date = new Date();
var hours = date.getHours();
if ( (hours < 6) || (hours >= 22) ) {
document.write("Good Night");
}
else if ( (hours >= 19) && (hours < 22) ) {
document.write("Good Evening");
}
else if ( (hours >= 6) && (hours < 9) ) {
document.write("Good Morning");
}
else {
document.write("Good Day");
}
//--></SCRIPT>or indenting the code to show which else goes with which if:
<SCRIPT LANGUAGE = 'JavaScript'><!--
var date = new Date();
var hours = date.getHours();
if ( (hours < 6) || (hours >= 22) )
document.write("Good Night")
else
if ( (hours >= 19) && (hours < 22) )
document.write("Good Evening")
else
if ( (hours >= 6) && (hours < 9) )
document.write("Good Morning")
else
document.write("Good Day");
//--></SCRIPT>From this last version you might be able to begin to see that in the form:
if (expression1)
statement1that the statement can actually be another if statement:
if (expression1)
if (expression2)
statement1Or:
if (expression1)
if (expression2) statement1In other words an if (expression) does not form a statement on its own, it requires the conditional statement that follows it to make it valid JavaScript statement. The following is illegal and would cause a JavaScript error:
if (expression)