簡體   English   中英

如何在另一個 function 中使用提示的 output 作為全局變量

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM