为什么我的启动variables在循环运行之前被更改?

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

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

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

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

什么可能导致这个?

 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!"); // } } } }); }); 

你有一个错位;for循环行的末尾:)

尝试改变这一点:

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

至:

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

这个愚蠢的错字整齐地解释了iterator等于data.length ,正如你所报告的那样。