【发布时间】:2020-03-11 20:09:22
【问题描述】:
我不知道这段代码有什么问题。代码取第一行,检查它,然后删除它,然后检查下一行。但是,当所有行都为空时,代码将继续工作;它不会停止。
function getSocksListInput() {
var socksList = $("#socks").val().split("\n");
var getTheSocksLine = $.trim(socksList[0].replace(/\s+/g, ''));
var getIP = $.trim(getTheSocksLine.split(":")[0]);
var getPort = $.trim(getTheSocksLine.split(":")[1]);
if (typeof getIP == "undefined" || typeof getPort == "undefined" || getIP == "" || getPort == "" && socksList.length != 0) {
getNewSocks();
console.log("i will not stop");
getSocksListInput();
} else if (getTheSocksLine.match(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,6}$/) == null) {
socksDieResultDisplay(getIP + ":" + getPort);
getNewSocks();
getSocksListInput();
} else if (getIP == "" || getPort == "" || getTheSocksLine == "") {
getNewSocks();
getSocksListInput();
} else {
checkSocksLiveDie(getIP, getPort);
}
}
如果我将socksList.length 条件更改为!= 1,它将正常停止,但不会检查最后的结果。为什么?
【问题讨论】:
-
为什么你递归做
getSocksListInput();?显然你的支票放得不好。因此,您进入递归并且永远不会退出。getNewSocks();是做什么的?