使Javascript通过值传递变量

时间:2019-04-23 23:47:06

标签: javascript angular ecmascript-6

我有两个while循环与observables同时运行,方法看起来像这样(为简洁起见,我已经取了名字):

  initiateGraph(fromDate: Date, toDate: Date) {
    const graphParts = zip(
          this.dothefirstthing(fromDate, toDate),
          this.doanotherthing(fromDate, toDate)
    );
  }

这两个方法都采用from和to日期,并将它们放入如下所示的while循环中:

while(from < to) {

  //do stuff

  from.setMonth(from.getMonth() + 1);
}

问题是,当“ doanotherthing”运行时,由于from和to日期相等,因此代码不会进入while循环。如果我在zip中切换顺序,则其他方法也会发生同样的事情。

除非我弄错了,否则会发生这种情况,因为第一个while循环更改了起始日期,因此在第二个while循环运行时不会击中日期。

因此,我的第一个想法就是尝试传递值而不是引用,这显然是问题所在。...现在我不太确定

我试图解决的问题:

  1. 在每种方法中设置局部变量,使其恰好在while循环上方
  2. 创建一个具有readonly属性的ImmutableDate类,并在启动图中设置日期
  3. 在启动图中设置块作用域作用域

这些为什么不起作用?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

在每种方法的开头创建日期的新副本。

const fromDate = new Date(from)

然后在循环中使用它。