簡體   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