switch
statements in JavaScript are a bit awkward. You need to remember to break
at the end of every case
statement to avoid accidentally falling through to the default case
. CoffeeScript prevents accidental fall-through, and can convert the switch
into a returnable, assignable expression. The format is: switch
condition, when
clauses, else
the default case.
As in Ruby, switch
statements in CoffeeScript can take multiple values for each when
clause. If any of the values match, the clause runs.
switch day
when "Mon" then go work
when "Tue" then go relax
when "Thu" then go iceFishing
when "Fri", "Sat"
if day is bingoDay
go bingo
go dancing
when "Sun" then go church
else go work
​
switch (day) {
case "Mon":
go(work);
break;
case "Tue":
go(relax);
break;
case "Thu":
go(iceFishing);
break;
case "Fri":
case "Sat":
if (day === bingoDay) {
go(bingo);
go(dancing);
}
break;
case "Sun":
go(church);
break;
default:
go(work);
}​
switch
statements can also be used without a control expression, turning them in to a cleaner alternative to
if/else
chains.
score = 76
grade = switch
when score < 60 then 'F'
when score < 70 then 'D'
when score < 80 then 'C'
when score < 90 then 'B'
else 'A'
# grade == 'C'
​
var grade, score;
​
score = 76;
​
grade = (function() {
switch (false) {
case !(score < 60):
return 'F';
case !(score < 70):
return 'D';
case !(score < 80):
return 'C';
case !(score < 90):
return 'B';
default:
return 'A';
}
})();
​
// grade == 'C'