Javascript 错误…我应该改用开关吗?(JS)

Javascript 错误…我应该改用开关吗?(JS),javascript,Javascript,我正在做一个项目,在这个项目中,我必须在一年中标记某些假期。我已经确定了具体的假期,但是我在前端遇到了问题,无法提供适当的消息,我觉得有一种更短的方法可以做到这一点,但不确定 下面是我的代码。这是在一个控制器中编写的,我正在使用coffeescript,但是为了这个问题,我将coffeescript转换成javascript day = new Date() month1 = moment() var date, holiday2, month, weeknum; date = day.getD

我正在做一个项目,在这个项目中,我必须在一年中标记某些假期。我已经确定了具体的假期,但是我在前端遇到了问题,无法提供适当的消息,我觉得有一种更短的方法可以做到这一点,但不确定

下面是我的代码。这是在一个控制器中编写的,我正在使用coffeescript,但是为了这个问题,我将coffeescript转换成javascript

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调试器确实看到了很多东西,