mor*_*ped 5 javascript infinite-loop requirejs
我有一个提交到JavaScript的HTML表单,处理数据并将POST请求发送到PHP脚本.
var xmlHttp = new XMLHttpRequest();
        xmlHttp.onreadystatechange = function() {
            if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                if(contentElt && xmlHttp.responseText) {
                    var ajaxData = JSON.parse(xmlHttp.responseText);
                    var processedResultCount = parseInt(ajaxData[0]);
                    totalResultCount += processedResultCount;
                    contentElt.innerHTML = "Date processed (month - year): " + recupMonth + " - " + recupYear + "<br/>Results processed: " + processedResultCount + "<br/>Total results processed: " + totalResultCount;
                    pageNum++;
                    writeMode = "a";
                    if(processedResultCount === 0) {
                        pageNum = 1;
                        recupMonth--;
                        if(recupMonth === 0 && recupYear > endYear) {
                            recupMonth = 12;
                            recupYear--;
                        }
                        else if(recupMonth === endMonth && recupYear === endYear) {
                            alert("Processing finished");
                            if(totalResultCount != 0) {
                                contentElt.innerHTML = "Total processed results: " + totalResultCount + '<br/><br/>> <a href="amazon_keyword_stats.csv" title="Download CSV result file">Download CSV result file</a>';
                            }
                            return;
                        }
                    }
当我到达这个条件
else if(recupMonth === endMonth && recupYear === endYear)
并且条件得到满足.代码没有进入.
继续递减月份,当它达到-2时,它仍然执行五次迭代,然后代码报告不提供CSV下载.
我不明白为什么会这样,有人会有线索?
else if(recupMonth === endMonth && recupYear === endYear)
recupMonth、endMonth、recupYear 和 endYear 是同一类型吗?因为其中一些可能是字符串而不是数字,并且运算符“= =”并不将它们视为相等。
如果您不确定,您可以尝试将它们解析为该条件内的数字(至少尝试一下是否有效):
else if(parseInt(recupMonth, 10) === parseInt(endMonth, 10) && parseInt(recupYear, 10) === parseInt(endYear, 10))
或者尝试不比较类型:
else if(recupMonth == endMonth && recupYear == endYear)
希望这可以帮助。
问候。