[英]Why can't I call a function from another function in javascript?
<!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的对象?如果是这种情况,那么如何正确创建该对象? 任何帮助表示赞赏=)
函数和参数使用的名称相同: 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>
简短答案
将您的check
功能中的参数guess
重命名为其他任何东西。
详细答案
参数在check
功能guess
是建立与名称的变量guess
在函数的局部范围。
当您将其名称更改为其他名称时,请说guessnumber
。 它不会在函数的本地范围内找到guess
,并且将尝试在父范围(在您的情况下为全局范围)中使用具有相同名称的变量,并且它将找到具有名称guess
的函数,并且您的代码将正常工作很好。
为了理解这一点,您也可以在check
函数中将对guess
函数的调用从guess()
更改为window.guess()
,这也将使您的代码在功能上正确(在这种情况下,它将在全局中直接查找具有名称guess
函数范围,但是不建议使用此方法。
在这里阅读更多
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.