【问题标题】:Why is my start variable being changed before this for loop runs?为什么在这个 for 循环运行之前我的 start 变量被改变了?
【发布时间】:2025-12-27 17:25:05
【问题描述】:

所以最奇怪的事情正在发生。

我有这个 node.js express 服务器,我想在它启动时运行一个函数。

当它启动时,它会在我的数据库中查询一组由于太旧而应该被删除的对象。我有一个 for 循环,我想用它来删除它们。但是当 for 循环开始并且我有一个变量(在这种情况下它现在应该被称为迭代器)设置为 0,var iterator = 0 但它一直被设置为我的数组的长度。

所以当 for 循环开始时,迭代器不是等于 0,而是等于 3。然后当循环发生时,它会中断,因为它尝试访问 data[3].ChildID; 以获取大小为 3 的数组,而不是 @ 987654323@

这可能是什么原因造成的?

app.listen(3000, function() {
console.log("Launch successful. To access app, open your browser and insert the following URL into your address bar: http://localhost:3000/");
// var i = 0;
// setInterval(updateDB.callUnenrolledList(function(err, data){
//     if(err) {
//       // do nothing
//     }
//     // send the data
//     console.log("Checking for Unenrolled Children...");
//     res.send(data);
//   }), 1000);

updateDB.callUnenrolledList(function(err, data){
    if(err) {
      // do nothing
    }
    console.log("Checking for Unenrolled Children...");
    if(data.length < 1){
      console.log("Database is up to date. No Children Deleted");
      //Do nothing. There are no unenrolled children
    } else {
      //Check to see if children have been "idle" for 5 years (arbitrary time set by SPCCC) and delete them if they have been
      var currentDate = new Date();
      var iterator = 0;
      for(iterator; iterator < data.length; iterator++);{
        console.log(iterator);
        // var unenrolledDate = new Date(data[i].unenrolledDate);
        var unenrolledDate = new Date("5/4/2017");
        var difference = currentDate - unenrolledDate;
        if(difference > 86400000){
          console.log("Over 1 day old. Delete child!");
          console.log(iterator);
          var child = data[a].ChildID;
          var ID = {ChildID: child};
          updateDB.deleteChildFromDatabasePermanently(ID);
          console.log("child deleted");
        } else{
          //do nothing
        }
        // if(difference > 157700000000){
        //   console.log("Over 5 years old. Delete child!");
        // }
      }
    }
  });
  });

【问题讨论】:

    标签: javascript node.js variables for-loop


    【解决方案1】:

    您在 for 循环 行的末尾有一个错误的 ; :)

    尝试改变这个:

    for(iterator; iterator < data.length; iterator++);{
    

    到:

    for(iterator; iterator < data.length; iterator++) {
    

    正如您所报告的,那个愚蠢的错字巧妙地解释了iterator 等于data.length

    【讨论】:

    • 发生在我们所有人身上:)...有时你只需要一双新鲜的眼球。
    最近更新 更多