Javascript 错误…我应该改用开关吗?(JS)
我正在做一个项目,在这个项目中,我必须在一年中标记某些假期。我已经确定了具体的假期,但是我在前端遇到了问题,无法提供适当的消息,我觉得有一种更短的方法可以做到这一点,但不确定 下面是我的代码。这是在一个控制器中编写的,我正在使用coffeescript,但是为了这个问题,我将coffeescript转换成javascriptJavascript 错误…我应该改用开关吗?(JS),javascript,Javascript,我正在做一个项目,在这个项目中,我必须在一年中标记某些假期。我已经确定了具体的假期,但是我在前端遇到了问题,无法提供适当的消息,我觉得有一种更短的方法可以做到这一点,但不确定 下面是我的代码。这是在一个控制器中编写的,我正在使用coffeescript,但是为了这个问题,我将coffeescript转换成javascript day = new Date() month1 = moment() var date, holiday2, month, weeknum; date = day.getD
day = new Date()
month1 = moment()
var date, holiday2, month, weeknum;
date = day.getDay();
month = month1.month() + 1;
weeknum = Math.ceil(date / 7) + 1;
holiday2 = month + "/" + weeknum + "/" + date;
if (holiday2 === "1/3/1") {
vm.typedholiday = "Martin Luther King Day"; }
if (holiday2 === "2/3/1") {
vm.typedholiday = "Washington's Birthday"; }
if (holiday2 === "5/3/6") {
vm.typedholiday = "Armed Forces Day"; }
if (holiday2 === "9/1/1") {
vm.typedholiday = "Labor Day"; }
if (holiday2 === "10/2/1") {
vm.typedholiday = "Columbus Day"; }
if (holiday2 = "11/4/4") {
vm.typedholiday = "Thanksgiving Day"; }
vm.message = true
.row.holiday-banner{ 'ng-if' => "vm.message" }
.col-xs-12
.holiday-body.text-center
%h3 We are currently closed due to {{ vm.typedholiday }}.
所以我有两个问题。我写这个问题的日期正好是哥伦布日。然而,我仍然有感恩节而不是哥伦布日。我不明白为什么会这样。如果我的代码中有什么东西会导致这种情况,请告诉我。我还想知道使用JS'switch'方法是否更好?如果是这样的话,怎么做?你可以用
开关来代替-这没什么区别。如果你的项目有一个样式指南,按照上面说的做。如果没有,请选择您喜欢的样式
如果您确实使用了开关
,它将如下所示:
switch (holiday2) {
case "1/3/1":
vm.typedholiday = "Martin Luther Kind Day";
break;
case "2/3/1":
vm.typedholiday = "Washington's Birthday";
break;
// more cases
}
你可以改用开关
——这没什么区别。如果你的项目有一个样式指南,按照上面说的做。如果没有,请选择您喜欢的样式
如果您确实使用了开关
,它将如下所示:
switch (holiday2) {
case "1/3/1":
vm.typedholiday = "Martin Luther Kind Day";
break;
case "2/3/1":
vm.typedholiday = "Washington's Birthday";
break;
// more cases
}
你可以改用开关
——这没什么区别。如果你的项目有一个样式指南,按照上面说的做。如果没有,请选择您喜欢的样式
如果您确实使用了开关
,它将如下所示:
switch (holiday2) {
case "1/3/1":
vm.typedholiday = "Martin Luther Kind Day";
break;
case "2/3/1":
vm.typedholiday = "Washington's Birthday";
break;
// more cases
}
你可以改用开关
——这没什么区别。如果你的项目有一个样式指南,按照上面说的做。如果没有,请选择您喜欢的样式
如果您确实使用了开关
,它将如下所示:
switch (holiday2) {
case "1/3/1":
vm.typedholiday = "Martin Luther Kind Day";
break;
case "2/3/1":
vm.typedholiday = "Washington's Birthday";
break;
// more cases
}
自上次以来,您的值被覆盖。如果未使用比较运算符,则使用赋值运算符:
if (holiday2 = "11/4/4")
所有这些操作都是将字符串“11/4/4”
分配给holiday2
,由于这是一个真实的值,因此继续执行下一个语句,该语句将vm.typedholiday
替换为“感恩节”
显而易见的解决办法是:
if (holiday2 === "11/4/4")
自上次以来,您的值被覆盖。如果未使用比较运算符,则使用赋值运算符:
if (holiday2 = "11/4/4")
所有这些操作都是将字符串“11/4/4”
分配给holiday2
,由于这是一个真实的值,因此继续执行下一个语句,该语句将vm.typedholiday
替换为“感恩节”
显而易见的解决办法是:
if (holiday2 === "11/4/4")
自上次以来,您的值被覆盖。如果未使用比较运算符,则使用赋值运算符:
if (holiday2 = "11/4/4")
所有这些操作都是将字符串“11/4/4”
分配给holiday2
,由于这是一个真实的值,因此继续执行下一个语句,该语句将vm.typedholiday
替换为“感恩节”
显而易见的解决办法是:
if (holiday2 === "11/4/4")
自上次以来,您的值被覆盖。如果未使用比较运算符,则使用赋值运算符:
if (holiday2 = "11/4/4")
所有这些操作都是将字符串“11/4/4”
分配给holiday2
,由于这是一个真实的值,因此继续执行下一个语句,该语句将vm.typedholiday
替换为“感恩节”
显而易见的解决办法是:
if (holiday2 === "11/4/4")
也许你应该考虑这个问题:
。。。
假期2=月+“/”+周数+“/”+日期;
变量特殊天数={
“1/3/1”:“马丁·路德慈善日”,
“2/3/1”:“华盛顿的生日”,
“5/3/6”:“武装部队日”,
“9/1/1”:“劳动节”,
“10/2/1”:“哥伦布日”,
“11/4/4”:“感恩节”,
}
vm.typedholiday=特殊日期[假日2];
vm.message=true
...
我发现这更可读,更容易扩展也许你应该考虑这个问题:
。。。
假期2=月+“/”+周数+“/”+日期;
变量特殊天数={
“1/3/1”:“马丁·路德慈善日”,
“2/3/1”:“华盛顿的生日”,
“5/3/6”:“武装部队日”,
“9/1/1”:“劳动节”,
“10/2/1”:“哥伦布日”,
“11/4/4”:“感恩节”,
}
vm.typedholiday=特殊日期[假日2];
vm.message=true
...
我发现这更可读,更容易扩展也许你应该考虑这个问题:
。。。
假期2=月+“/”+周数+“/”+日期;
变量特殊天数={
“1/3/1”:“马丁·路德慈善日”,
“2/3/1”:“华盛顿的生日”,
“5/3/6”:“武装部队日”,
“9/1/1”:“劳动节”,
“10/2/1”:“哥伦布日”,
“11/4/4”:“感恩节”,
}
vm.typedholiday=特殊日期[假日2];
vm.message=true
...
我发现这更可读,更容易扩展也许你应该考虑这个问题:
。。。
假期2=月+“/”+周数+“/”+日期;
变量特殊天数={
“1/3/1”:“马丁·路德慈善日”,
“2/3/1”:“华盛顿的生日”,
“5/3/6”:“武装部队日”,
“9/1/1”:“劳动节”,
“10/2/1”:“哥伦布日”,
“11/4/4”:“感恩节”,
}
vm.typedholiday=特殊日期[假日2];
vm.message=true
...
我发现这更可读,更容易扩展 谢谢大家!!今天我已经重做了将近10个小时的代码……过了一段时间,我并不总是看到我的错误。@kdweber89调试器确实看到了很多东西,它对您帮助很大。学会使用它。(并且,很乐意帮忙:-)谢谢!今天我已经重做了将近10个小时的代码……过了一段时间,我并不总是看到我的错误。@kdweber89调试器确实看到了很多东西,它对您帮助很大。学会使用它。(并且,很乐意帮忙:-)谢谢!今天我已经重做了将近10个小时的代码……过了一段时间,我并不总是看到我的错误。@kdweber89调试器确实看到了很多东西,