当我运行它时,我得到“TypeError:Number不是函数”

时间:2014-08-19 02:08:25

标签: javascript function typeerror

var userChoice = prompt("Do you choose rock, paper, or scissors?")
var computerChoice = Math.random()
    if(computerChoice(0 < 0.33))  {
    computerChoice = ("Paper");
} else if(computerChoice(0.34 < 0.66)) {
    computerChoice = ("Rock");
} else {
    computerChoice = ("Scissors");
}

这段代码中是否有我遗漏的东西?它对我来说很好..无论如何,正如我所说,当我运行它时,我得到上面提到的TypeError。如果随机数低于.33,我试图获得Paper,如果是.34-.66则是Rock,如果是.67-1则是Scissors。

3 个答案:

答案 0 :(得分:2)

无论何时使用Math.random,它都会将变量设为Number,并尝试将其作为函数。

您的代码应如下所示:

var userChoice = prompt("Do you choose rock, paper, or scissors?")
var computerChoice = Math.random();
    if(computerChoice < 0.33)  {
    computerChoice = "Paper";
} else if(0.34 < computerChoice && computerChoice < 0.66) {
    computerChoice = "Rock";
} else {
    computerChoice = "Scissors";
}

现在你把随机数比作A号而不是函数

Working Fiddle

根据@Anthony Forloney更新代码

答案 1 :(得分:1)

var computerChoice = Math.random()

创建Number类型的变量。在您的条件中,您可以:

if(computerChoice(0 < 0.33))

通过在computerChoice之后添加括号,JS解释器认为您正试图通过该名称调用函数,而实际上它是一个数字。

答案 2 :(得分:0)

您可以使用conditional operator。此外,重用变量不是一个好主意,所以:

var userChoice = prompt("Do you choose rock, paper, or scissors?")
var num = Math.random();
var computerChoice = num < 0.33? "Paper" : num < 0.66? "Rock" : "Scissors";

虽然像这样的小数舍入也会略微偏向结果(但我认为没有人会注意到......)