javascript - 所有值均替换为 For 循环 TypeScript 中的最后一个值

标签 javascript typescript

我在 JavaScript 中有一个 for 循环,它连接 calendarEvents 中的数据:

drop(info) {
    var that = this;
    var startDate = info.date;
    var frequency = this.skippingNumber;

    for (var i = 0; i <= 3; i++) {
      (function (start) {
        that.calendarEvents = that.calendarEvents.concat({
          title: 'Dropped Event',
          start: start,
          allDay: info.allDay
        });
      })(startDate);
      startDate = this.addDays(startDate, frequency);
    }
  }

addDays(date: Date, days: number): Date {
    var passedDate = date;
    passedDate.setDate(passedDate.getDate() + days);
    return passedDate;
  }

如果我在循环内记录startDate,我会得到实际值,即星期一、星期二、星期三、星期四。但是当我记录calendarEvents时,我得到的所有数据都是星期四。 谁能帮我这个? 预先感谢!

最佳答案

所有 addDays() 调用都接收参数、修改并返回相同的对象 (var startDate = info.date)。

重写addDays()方法来创建并返回一个新的Date对象:

addDays(date: Date, days: number): Date {
    var passedDate = new Date(date.getTime());
    passedDate.setDate(passedDate.getDate() + days);
    return passedDate;
}

关于javascript - 所有值均替换为 For 循环 TypeScript 中的最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56236215/

相关文章:

typescript - 如何启用作为自托管网页的控制台或 Windows 服务的 Visual Studio 项目的 TypeScript 选项卡

javascript - 在 typescript 中连接两个对象

reactjs - Typescript 和 React(使用 Gatsby 加载器): unable to import images as modules

javascript - TypeScript/JavaScript 中的 array.indexOf

javascript - 动态设置多个 setInterval(s) 并存储以供以后访问

javascript - 奇怪的行为 IE8 选择框向上显示并超出浏览器限制

javascript - 文本框/文本区域内的下拉菜单

Javascript 检查是否安装了 Flash Player 并重定向到需要的页面

typescript - 用 ArrayLike 声明 TypedArray?

javascript - 显示 JSON 请求