【发布时间】:2014-08-17 23:25:40
【问题描述】:
我正在使用此代码将函数的输出(来自 args 数组)与预期输出数组进行比较,并将结果记录在数组中(称为 results[],默认填充为 false 值,因此为什么没有 else 条件)。
for(i=0;i<args.length;i++){
console.log('in for');
if(f(args[i])==expected[i]){
console.log('in if');
results[i] ='true';
}
}
当我运行该函数时,“in for”会按预期出现在控制台 args.length 中。然而,'in if' 永远不会出现(即使条件为真)。有什么问题?
编辑:将提供更多详细信息 我正在做一个网站,人们可以输入js代码来解决某个问题,网站会从textarea中获取代码,运行代码,并与输出进行比较。
下面是我非常杂乱的测试函数,它接受用户输入到文本区域的代码参数:
function test(inputcode){
var passed = inputcode;
var allcorrect = true;
try{
eval( "var f = " + passed);
var args = ["pogchamp","progChamprogCHAMPchamp","pro2GCHAMPCprogH9AMPprogchamp","progchamp19","1pro2champ2prog","progCHamp","Prog Champ"];
var expected = ['false','false','true','true','true','true','true'];
var results=['false','false','false','false','false','false','false'];
for(i=0;i<args.length;i++){
console.log('in for');
console.log(f(args[i]));
console.log(expected[i]);
if(f(args[i])==expected[i]){
console.log('in if');
results[i] ='true';
}
}
for(i=0;i<results.length;i++){
if(results[i]==false){
allcorrect=false;
}
}
}
catch(err){
alert("Something went wrong. Check your code and resubmit.");
console.log(err.message);
}
}
当我在 chrome 中运行代码时的输出是:
in for
false
false
in for
false
false
in for
false
true
in for
false
true
in for
false
true
in for
false
true
in for
false
true
在这种情况下,输入函数 (f()) 只是返回 false,并且什么也不做。
function foo(str) {
return false; //auto-generated
}
【问题讨论】:
-
尝试在
if语句之前记录f(args[i])和expected[i],看看它们显示了什么。 -
当我测试它时,它按预期工作:jsfiddle.net/HbMt9
-
@alizahid,我将向 OP 添加更多信息(请稍等,抱歉)。我在 if 之前记录了 f(args[i]) 和 expected[i] 并且它们正确显示。
-
f是什么,我怀疑这就是你的问题。 -
添加了详细信息。我感觉它也与 f 有关,但我不确定发生了什么。
标签: javascript arrays loops return conditional