switch语句,不执行任何case

Switch statement, no case is executed

我正在尝试编写一个函数来计算已经过去了多少天,并根据该值更新变量并提醒该字符串。

我不断收到 "undefined"。我的 switch 语句是否正确?

var d = new Date();
var o = new Date(2015, 12, 7);
var todayDate = d.getDate();
var startDate = o.getDate();
var twelveDays = todayDate - startDate;

switch (twelveDays) {
  case "0":
    var calories = '10';
    break;
  case "1":
    var calories = '20';
    break;
  case "2":
    var calories = '30';
    break;
  case "3":
    var calories = '40';
    break;
  case "4":
    var calories = '50';
    break;
  case "5":
    var calories = '60';
    break;
  case "6":
    var calories = '70';
    break;
  case "7":
    var calories = '80';
    break;
  case "8":
    var calories = '90';
    break;
  case "9":
    var calories = '100';
    break;
  case "10":
    var calories = '110';
    break;
  case "11":
    var calories = '120';
    break;
  case "12":
    var calories = '130';
    break;
}

alert(calories);

View on JSFiddle

twelveDays 是一个整数。在您的 switch 语句中,您正在检查一个字符串。没有默认子句,因此它会抛出错误 undefined

改成这样:

switch (twelveDays) {
   case 0:
   var calories = '10';
   break;
case 1:
   var calories = '20';
   break;
case 2:
   var calories = '30';
   break;
}

此外,最好添加一个默认子句以防万一

我刚刚更新了你的 jsfiddle。 http://jsfiddle.net/x28a1Lhc/2/

当你使用switch时,最好添加默认大小写。

var twelveDays = todayDate - startDate; returns 整数。

您需要将 switch 中的大小写匹配为整数。