繁体   English   中英

为什么我不能从JavaScript中的另一个函数调用一个函数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM