Node js 布尔函数不返回 false

问题描述 投票:0回答:1

我有一个简单的 Date 类,其中包含一些函数。其中之一是 SetMonthAndYear。

我使用 module.export 导出此类,以便其他类可以访问它:

class Date {
    currentMonth = 0;
    currentYear = 0;

    async SetMonthAndYear(timeStamp){
        var date = new Date(timeStamp);
        if(date.getFullYear() != this.currentYear || (date.getMonth() + 1) != this.currentMonth){
            this.currentYear = new Date(Date.now()).getFullYear();
            this.currentMonth = new Date(Date.now()).getMonth() + 1; // getMonth() gives 1 month earlier for some reason.
            console.log("New month and year is set: " + this.currentMonth + " - " + this.currentYear)
            return true;
        }
        return false;
    }
}

module.exports = new Date();

在其他课程中,我请求此函数来检查月份和年份是否需要像这样更新:

var dateClass = require(./Date.js);

class OtherClass
{
    var currentTimeStamp = ~some timestamp~;
    
    if (await dateClass.SetMonthAndYear(currentTimeStamp))
    {
        console.Log("The month and year are modified");
    }
    console.Log("Done.");
}

现在奇怪的部分: 第一次运行此代码设置月份和年份并将其作为输出(我期望的):

New month and year is set: 1 - 2025
The month and year are modified
Done.

第二次运行这是输出:

The month and year are modified
Done.

所以在函数中 if 语句被视为 false,但该函数似乎返回 true,而我期望 false 作为返回值?

我是 Nodejs 模块导出的新手,怀疑我在这里做错了什么,但不知道到底是什么?

node.js function boolean module.exports
1个回答
0
投票

由于我没有足够的代表来发表评论,所以我正在写答案。

  • 您可能想要导出类而不是类的实例。 这可能会导致问题 - currentMonth 和 currentYear 也不会重置。
  • 您还希望避免创建冲突的类名,例如 Date
© www.soinside.com 2019 - 2024. All rights reserved.