![](/img/trans.png)
[英]How to use Global Variable in a function and then use the output of the function in another function
[英]How to use output of prompt as global variable in another function
跟隨 Odin Project Rock Paper Scissors - 嘗試在另一個 function 中使用 JS 提示輸入來計算誰贏得了比賽。
已經剝離了很多內容,以希望使問題/答案對其他人盡可能可重用。
我設置了 2 個全局變量:
let computerSelection;
let playerSelection;
我有一個 function (playRound)
,它計算出一輪(誰贏了)的結果,我知道在對player selection
進行硬編碼時有效(因為我已經嘗試控制台成功記錄 output)。
但是我想替換播放器選擇的硬編碼以使用提示的輸入。 但是當我這樣做時,它沒有正確設置playerSelection
,因為當我控制台日志playRound()
時我只是得到' undefined
'。
我的提示:
function showModal() {
selection = window.prompt('Rock, paper or scissors?').toLowerCase();
playerSelection=selection
}
我知道當我使用這樣的不同按鈕對playerSelection
進行控制台登錄時,這是可行的:
function print() {
console.log(playerSelection);
}
但是,當我嘗試在我的playRound()
function 中使用它時,它顯示undefined
?
function playRound(playerSelection, computerSelection) {
computerSelection = computerPlay();
playerSelection = showModal(playerSelection);
我也嘗試過使用
playerSelection = playerSelection
並且
playerSelection = showModal()
正如我所想的那樣,一旦模態完成,全局變量就會被設置,但這也返回未定義???
我不明白為什么這在playRound
function 中不起作用,因為它似乎模式/提示正在設置playerSelection
變量(當我執行后 console.log playerSelection
(使用我的測試print()
function?)
您在此處遇到 scope 的問題。 因為您有一個名為 playerSelection 的參數被傳遞到 function 它正在設置該變量而不是您的全局變量。 你可以像這樣解決這個問題:
let playerSelection;
let computerSelection;
function playRound() {
computerSelection = computerPlay();
playerSelection = showModal(playerSelection);
}
function showModal() {
return window.prompt('Rock, paper or scissors?').toLowerCase();
}
playRound();
請注意,您還需要從 showModal 返回提示結果,沒有返回語句的 function 將始終返回 undefined。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.