使用函数返回作为条件语句的内容

使用函数返回作为条件语句的内容

问题描述:

我想使用特定函数的返回值作为if语句的条件。那可能吗 ?使用函数返回作为条件语句的内容

我基本上建立一个函数内的一个字符串,该函数接受一个数组(conditionArray)并将它连接到一个语句。 然后它以字符串的形式返回这个条件。 之后,我想用这个字符串作为我的if语句的条件。

我目前的问题看起来像这样。

var answer = prompt("Tell me the name of a typical domestic animal"); 
 

 
var conditionArray = new Array("Dog", "Turtle", "Cat", "Mouse") 
 

 
function getCondition(conditionArray) { 
 

 
    for (i = 0; i < conditionArray.length; i++) { 
 

 
    if (i != conditionArray.length) { 
 

 
     condition += 'answer === ' + conditionArray[i] + ' || '; 
 

 
    } else { 
 

 
     condition += 'answer === ' + conditionArray[i]; 
 

 
    } 
 

 
    return condition; 
 

 

 
    } 
 

 
} 
 

 
if (getCondition(conditionArray)) { 
 

 
    alert("That is correct !"); 
 

 
} else { 
 

 
    alert("That is not a domestic animal !"); 
 

 
}

+0

一件事是你'if'声明您使用的是赋值运算符(=)而不是等号(==)。 –

对于这种类型的测试使用Array.prototype.indexOf的,x = arr.indexOf(item)

  • x === -1装置item不在arr
  • 否则xarr索引中的第一次出现item位于
var options = ["Dog", "Turtle", "Cat", "Mouse"], 
    answer = prompt("Tell me the name of a typical domestic animal"); 

// some transformation of `answer` here, i.e. casing etc 

if (options.indexOf(answer) !== -1) { 
    alert("That is correct !"); 
} else { 
    alert("That is not a domestic animal !"); 
} 
+0

感谢您的帮助。它应该解决我目前的问题。但对于未来和更多问题。如上所述,是否有机会在条件语句中写入字符串? – theCodingPeanut

做这种测试的最好方法是使用Array.prototype.indexOf。有关如何使用它的更多细节,请参阅Paul的答案。

-

如果你真的真的想返回的条件,你可以使用eval()评估条件的字符串。请记住,eval()是危险的,但。这是使用不建议。见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Don%27t_use_eval_needlessly!

if (eval(getCondition(conditionArray))) { 
    alert("That is correct !"); 
} else { 
    alert("That is not a domestic animal !"); 
} 
+0

感谢您的详细解释,这就是我正在寻找。尽管如此,你是对的,它对于生产来说太危险了:/ – theCodingPeanut

+0

要清楚,除非你自己编写解析器,否则没有其他方法可以评估条件字符串。你可以做的一件事是在将字符串传递给eval函数之前进行消毒。 –