IF 函数是否删除了 javascript 中的日期对象?

Is the IF function removing the date object in javascript?

我花了一个小时寻找答案并尝试了不同的东西,所以我很感激这里的任何帮助。

以下代码非常适合查找某人的 B 部分生效日期。但是,当某人的生日真的是一个月的 1 号时,将使用 'if' 函数,我无法再格式化和写入日期。几乎就像 'partB_eff' 不再是一个日期对象。 (我是新手,所以这部分可能是我编的。)

我收到错误“TypeError:partB_eff.toLocaleDateString 不是 AutoFill_6_Step_Checklist(代码:24:27)处的函数”

我该如何解决?

let birthday = new Date(e.values[2]);
    //this is a date entered from a google form
let bdayCopy = new Date(birthday);
    //I created this since I'll be using .setMonth(), and I don't want to change the original date of the birhtday
let bday65 = new Date(bdayCopy.setMonth(bdayCopy.getMonth()+780));
    //finds the 65th birthday
let partB_eff = new Date(bdayCopy.setDate(01));
    //find's the Medicare part B effective date (the 1st of the month someone turns 65)

if(birthday.getDate()==1){
    partB_eff = partB_eff.getMonth-1;
    //if the person's birthday is really on the 1st of the month, the part b effective date is the 1st of the month prior. partB_eff must be converted
  }

partB_eff = partB_eff.toLocaleDateString('en-us',{year:"numeric",month: "short",day:"numeric"});
    //format partB_eff so that it looks nice on paper
partB_eff = partB_eff.getMonth-1;

并不像您认为的那样。它所做的是从您的日期对象中获取 vound function getDate,并尝试从中减去一个。在任何其他语言中,试图对函数进行减法运算都是类型错误,但 Javascript 是 Javascript 并且允许对几乎任何类型进行数字运算。函数减去一个数在JS中是NaNNaN 没有名为 toLocaleString 的方法,因此出现错误。

有趣的是,你在上面用 bdayCopy.setMonth(bdayCopy.getMonth()+780) 正确地做了同样的操作 在这里做同样的事情

bdayCopy = new Date(bdayCopy.setMonth(bdayCopy.getMonth()-1));

还有一些重要的概念。 Javascript 中的 if 不是 函数。 if 是开始条件语句的关键字。你不能做任何你可以用 if 函数做的事情。您不能调用它或将其分配给变量或将 ot 作为函数参数传递。清楚地理解函数是什么是你需要做的事情才能在 JS 或任何其他语言中工作。

最后,如果您在 JS 中进行日期数学运算,我强烈建议您使用像 DateFns 或 Moment 这样的日期库。 Javascript 原生日期 API 可能是所有语言中设计最差的日期 API。