在我的下面的程序中,我发现let x = elements[0].querySelectorAll('.mat-calendar-body-cell');
x.forEach(y => {
let c = new Date(y.getAttribute("aria-label"));
if(c < this.startDate)
{
y.classList.add('newClass');
}
});
变量的值是它的预期值的两倍(999000而不是499500)。仔细看看它表明,即使在第一次调用后score
设置为true,计算也会完成两次。知道这里出了什么问题吗?该程序是单线程的。实际计算涉及调用rest API,但出于测试目的,我已将其删除。
flag
答案 0 :(得分:6)
问题是由于类初始化的顺序。静态初始化程序按它们定义的顺序执行。变量flag
仅在调用computeScore()
后初始化。因此,当第二次调用该方法时,flag
将为false
。您可能想要摆脱静态块
static{
computeScore();
}
如果你想要延迟初始化。