这是测试代码。我不确定为什么我没有在 console.log(“ hasToken:” + hasToken); 行中返回字符串? 3次尝试失败后,我应该将其退回。没有标记(var XX)的字符串可以正常工作,但是带有标记(var X)的字符串永远不会正确返回该字符串。如果我单步执行代码,我会看到字符串被传回,但是发生了其他事情,我不知道为什么? console.log是否显示hasToken值未定义?我看到应该在哪里返回字符串。Test Code Here
var x = "//tokene.secure.adnxs.com/px?randomnumber=[timeSTAMP]&url=[URl]&newvsreturning=[NEWvsRETURNING]";
var xx = '//xwww.googleadservices.com/pagead/conversion/822232847/?label=_7yrCLe91H4Qj46JiAM&guid=ON&script=0';
var regex = new RegExp("/\\[URL\\]|\\[NEWVSRETURNING\\]|\\[RANDOMNUMBER\\]|\\[TIMESTAMP\\]|\\[CACHEBUSTER\\]/", "i");
function validateTokenRemoval(str) {
cnt = 0;
function testTokenRemoved(str) {
if ((regex.test(str))&&(cnt < 2)) {
//if in here it still has tokens
cnt++;
//str = detokenizeTags(imgSrc);
console.log(cnt + " failed : " + str);
testTokenRemoved(str);
} else {
console.log(cnt + " passed : " + str);
return str;
}
};
return testTokenRemoved(str);
};
var hasToken = validateTokenRemoval(x);
var noToken = validateTokenRemoval(xx);
console.log("hasToken : " + hasToken);
console.log("noToken : " + noToken);
答案 0 :(得分:1)
您必须在if块中的return
之前放置testTokenRemoved(str)
语句,以返回递归调用的返回值:
var x = "//tokene.secure.adnxs.com/px?randomnumber=[timeSTAMP]&url=[URl]&newvsreturning=[NEWvsRETURNING]";
var xx = '//xwww.googleadservices.com/pagead/conversion/822232847/?label=_7yrCLe91H4Qj46JiAM&guid=ON&script=0';
var regex = new RegExp("/\\[URL\\]|\\[NEWVSRETURNING\\]|\\[RANDOMNUMBER\\]|\\[TIMESTAMP\\]|\\[CACHEBUSTER\\]/", "i");
function validateTokenRemoval(str) {
cnt = 0;
function testTokenRemoved(str) {
if ((regex.test(str))&&(cnt < 2)) {
//if in here it still has tokens
cnt++;
//str = detokenizeTags(imgSrc);
console.log(cnt + " failed : " + str);
return testTokenRemoved(str);
} else {
console.log(cnt + " passed : " + str);
return str;
}
};
return testTokenRemoved(str);
};
var hasToken = validateTokenRemoval(x);
var noToken = validateTokenRemoval(xx);
console.log("hasToken : " + hasToken);
console.log("noToken : " + noToken);
好的,但是检查员为什么误导了你?让我们看看里面:
str
的值已不在范围内。str
的不同变量 ,因此检查器将向您显示其值,而您想要的值已undefined
进行检查。