Javascript 开关故障
我有以下代码:Javascript 开关故障,javascript,switch-statement,Javascript,Switch Statement,我有以下代码: var str = $("#datepicker").datepicker("getDate"); var datestr = str.toString().split(" "); switch(datestr[1]) { case "Jan": var datestrmon = "Яну"; break; case "Feb": var datestrmon = "Фев";
var str = $("#datepicker").datepicker("getDate");
var datestr = str.toString().split(" ");
switch(datestr[1]) {
case "Jan":
var datestrmon = "Яну";
break;
case "Feb":
var datestrmon = "Фев";
break;
case "Mar":
var datestrmon = "Мар";
break;
case "Apr":
var datestrmon = "Апр";
break;
case "May":
var datestrmon = "Май";
break;
case "Jun":
var datestrmon = "Юни";
break;
case "July":
var datestrmon = "Юли";
break;
case "Aug":
var datestrmon = "Авг";
break;
case "Sep":
var datestrmon = "Сеп";
break;
case "Oct":
var datestrmon = "Окт";
break;
case "Nov":
var datestrmon = "Ное";
break;
case "Dec":
var datestrmon = "Дек";
break;
default:
datestr[1];
}
alert(datestrmon);
我希望当浏览器提醒我datestrmon时会提醒我“ЮЮц”,但它会提醒我“未定义”。为什么?尝试在案例之外定义
datestrmon
。下面是一些经过清理的代码。如果不起作用,请发布您的输入
var str = $("#datepicker").datepicker("getDate");
var datestr = str.toString().split(" ");
var datestrmon = "";
switch(datestr[1]) {
case "Jan": {
datestrmon = "Яну";
break;
}
case "Feb": {
datestrmon = "Фев";
break;
}
case "Mar": {
datestrmon = "Мар";
break;
}
case "Apr": {
datestrmon = "Апр";
break;
}
case "May": {
datestrmon = "Май";
break;
}
case "Jun": {
datestrmon = "Юни";
break;
}
case "July": {
datestrmon = "Юли";
break;
}
case "Aug": {
datestrmon = "Авг";
break;
}
case "Sep": {
datestrmon = "Сеп";
break;
}
case "Oct": {
datestrmon = "Окт";
break;
}
case "Nov": {
datestrmon = "Ное";
break;
}
case "Dec": {
datestrmon = "Дек";
break;
}
default: {
datestr[1];
}
}
alert(datestrmon);
尝试在案例外部定义
datestrmon
。下面是一些经过清理的代码。如果不起作用,请发布您的输入
var str = $("#datepicker").datepicker("getDate");
var datestr = str.toString().split(" ");
var datestrmon = "";
switch(datestr[1]) {
case "Jan": {
datestrmon = "Яну";
break;
}
case "Feb": {
datestrmon = "Фев";
break;
}
case "Mar": {
datestrmon = "Мар";
break;
}
case "Apr": {
datestrmon = "Апр";
break;
}
case "May": {
datestrmon = "Май";
break;
}
case "Jun": {
datestrmon = "Юни";
break;
}
case "July": {
datestrmon = "Юли";
break;
}
case "Aug": {
datestrmon = "Авг";
break;
}
case "Sep": {
datestrmon = "Сеп";
break;
}
case "Oct": {
datestrmon = "Окт";
break;
}
case "Nov": {
datestrmon = "Ное";
break;
}
case "Dec": {
datestrmon = "Дек";
break;
}
default: {
datestr[1];
}
}
alert(datestrmon);
默认值:
案例未将datestr[1]
分配给datestrmon
。这是故意的吗无论如何,考虑使用查找表而不是大交换机。
var datestrmon = ({"Jan": "Яну",
"Feb": "Фев",
...
"Dec": "Дек"})[datestr[1]] || datestr[1];
// ^^^^^^^^^^^^^
// optional, if you think stuff outside of
// the table could appear and need a
// fallback.
默认值:
案例未将datestr[1]
分配给datestrmon
。这是故意的吗无论如何,考虑使用查找表而不是大交换机。
var datestrmon = ({"Jan": "Яну",
"Feb": "Фев",
...
"Dec": "Дек"})[datestr[1]] || datestr[1];
// ^^^^^^^^^^^^^
// optional, if you think stuff outside of
// the table could appear and need a
// fallback.
现在它没有提醒我什么你有没有试过用上面的括号。如果是这样,请将您的输入张贴到此处,我们可以查看一下-可能是案例不正确。上述操作应该有效。只是简单地解释一下为什么-当您放置“var datestrmon”来确定变量的范围时。因为您是在交换机中声明它的,所以一旦交换机完成,它就超出了范围,不再存在。通过将“var datestrmon”置于开关外部,它的作用域更广。@Nick:绝对错误