eval()返回未定义的代码

时间:2013-01-28 14:32:51

标签: javascript eval

当我在控制台中尝试eval(command)时,它只是给了我“未定义”。我要做的是将“命令”作为一行。怎么样?

str = ""
command = ""

if (document.checks.cb1.checked) {str += " && randomNum3 != 1"}
if (document.checks.cb2.checked) {str += " && randomNum3 != 2"}
if (document.checks.cb3.checked) {str += " && randomNum3 != 3"}
if (document.checks.cb4.checked) {str += " && randomNum3 != 4"}

command = "while (str == str" + str + ") {randomNum3 = Math.floor(Math.random() * (1 - 5)) + 5}"
eval(command)

1 个答案:

答案 0 :(得分:3)

您可以在没有eval的情况下进行编码。这应该可以解决问题:

var num = [];

if (document.checks.cb1.checked) {num.push(1)}
if (document.checks.cb2.checked) {num.push(2)}
if (document.checks.cb3.checked) {num.push(3)}
if (document.checks.cb4.checked) {num.push(4)}

while (num.indexOf(randomNum3) == -1) {
    randomNum3 = Math.floor(Math.random() * (1 - 5)) + 5;
}

假设strrandomNum3已定义,则应返回一个随机数。