<!DOCTYPE HTML>
<head>
<title>
Math game</title>
</head>
<body onload = "guess()">
<script>
function guess(){
var userGuess = prompt("Guess a positive number less than 50");
var userRandomNumber = Math.floor(Math.random() * 49) + 1;
check(userGuess,userRandomNumber);
}
</script>
<script>
function check(guess,randomNumber){
if(parseInt(guess)<0 ){
alert('Please enter a number in the given range');
guess();
}else if(parseInt(guess)>=50){
alert('Please enter a number in the given range');
guess();
}
else if (parseInt(guess) === randomNumber ) {
alert('You guessed the number!');
} else if(parseInt(guess) > randomNumber ) {
alert('Sorry. The number was ' + randomNumber);
}else{
alert('Sorry. The number was ' + randomNumber );
}
}
</script>
</body>
</html>
所以这是一个数字猜谜游戏,如果用户输入一个超出范围的数字,我想提示用户再次输入一个数字。所以我想从check()函数调用guess()函数。但是这个代码不会给出结果。我是否需要像在Java中一样创建一个类型为guess的对象?如果是这样的话,那我该如何正确创建对象呢?任何帮助表示赞赏=)
答案 0 :(得分:1)
您对函数和参数使用相同的名称:guess
。
将参数名称更改为其他名称:
<head>
<title>
Math game</title>
</head>
<body onload = "guess()">
<script>
function guess(){
var userGuess = prompt("Guess a positive number less than 50");
var userRandomNumber = Math.floor(Math.random() * 49) + 1;
check(userGuess,userRandomNumber);
}
function check(guessNumber,randomNumber){
if(parseInt(guessNumber)<0 ){
alert('Please enter a number in the given range');
guess();
}else if(parseInt(guessNumber)>=50){
alert('Please enter a number in the given range');
guess();
}
else if (parseInt(guessNumber) === randomNumber ) {
alert('You guessed the number!');
} else if(parseInt(guessNumber) > randomNumber ) {
alert('Sorry. The number was ' + randomNumber);
}else{
alert('Sorry. The number was ' + randomNumber );
}
}
</script>
</body>
&#13;
答案 1 :(得分:1)
简答
将guess
函数中的参数check
重命名为其他任何内容。
详细答案
check
函数 guess
中的参数正在函数的本地范围内创建名为 guess
的变量
当您将其名称更改为其他名称时,请说出 guessnumber
。它不会在函数的本地范围内找到 guess
,并将尝试访问父作用域中的同名变量(在您的情况下是全局作用域),它将找到名称为 guess
的函数,您的代码将完美无缺。
要理解这一点,您也可以从 {{1}更改 guess
功能中对 check
的调用功能} 到 guess()
这也将使您的代码功能正确(在这种情况下,它将直接查找名称为 window.guess()
的函数但是在全球范围内,不推荐这种方法。
了解更多here