第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用內部函數更改外部變量的值?

如何使用內部函數更改外部變量的值?

紫衣仙女 2023-04-20 16:19:06
在下面的代碼中,當我使用函數 calcScore 時,外部變量 playerScore 和 computerScore 沒有更新?如何使用函數更新它?據我了解,可以從內部范圍更改外部變量的值,但為什么它在這里不起作用?    <script>        function playRound(playerSelection, computerSelection) {            playerSelection = playerSelection.toLowerCase();            computerSelection = computerSelection.toLowerCase();            if (playerSelection === computerSelection) {                return "draw";            }            else if (playerSelection === "rock"){                if (computerSelection === "scissors") return "win";                else if (computerSelection === "paper") return "lose";            }            else if (playerSelection === "paper"){                if (computerSelection === "scissors") return "lose";                else if (computerSelection === "rock") return "win";            }            else if (playerSelection === "scissors"){                if (computerSelection === "rock") return "lose";                else if (computerSelection === "paper") return "win";            }        }                function computerSelection() {            let selection = ["rock", "paper", "scissors"];            return selection[Math.floor(Math.random() * selection.length)];        }        function calcScore(result, playerScore, computerScore) {            if (result === "win") {                playerScore += 1;                console.log("win");            }            else if (result === "lose") {                computerScore += 1;                console.log("lose");            }            else if (result === "draw") {                playerScore += 1;                computerScore += 1;            }        }
查看完整描述

2 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

Javascript 不會通過引用傳遞變量 - 因此您對函數所做的任何修改playerScore和computerScore內部修改calcScore()都只是該函數的局部修改。


您可以做的是制作playerScore全局computerScore變量。這樣任何修改都將在全局范圍內。或者,您可以calcScore()返回修改后的值。


使用全局方法:


    <script>

        let playerScore = 0;

        let computerScore = 0;


        function playRound(playerSelection, computerSelection) {

            playerSelection = playerSelection.toLowerCase();

            computerSelection = computerSelection.toLowerCase();

            if (playerSelection === computerSelection) {

                return "draw";

            }

            else if (playerSelection === "rock"){

                if (computerSelection === "scissors") return "win";

                else if (computerSelection === "paper") return "lose";

            }

            else if (playerSelection === "paper"){

                if (computerSelection === "scissors") return "lose";

                else if (computerSelection === "rock") return "win";

            }

            else if (playerSelection === "scissors"){

                if (computerSelection === "rock") return "lose";

                else if (computerSelection === "paper") return "win";

            }

        }

        

        function computerSelection() {

            let selection = ["rock", "paper", "scissors"];

            return selection[Math.floor(Math.random() * selection.length)];

        }

        function calcScore(result) {

            if (result === "win") {

                playerScore += 1;

                console.log("win");

            }

            else if (result === "lose") {

                computerScore += 1;

                console.log("lose");

            }

            else if (result === "draw") {

                playerScore += 1;

                computerScore += 1;

            }

        }

        function game() {


            for (let i = 1; i <= 5; i++) {

                let result = playRound(prompt("Select rock, paper, or scissors!"), computerSelection());

                calcScore(result);

                console.log(`You have ${playerScore} points! Computer has ${computerScore} points!`);

            }

            playerScore, computerScore = 0, 0;

        }

    </script>

替代方法:


    <script>

        function playRound(playerSelection, computerSelection) {

            playerSelection = playerSelection.toLowerCase();

            computerSelection = computerSelection.toLowerCase();

            if (playerSelection === computerSelection) {

                return "draw";

            }

            else if (playerSelection === "rock"){

                if (computerSelection === "scissors") return "win";

                else if (computerSelection === "paper") return "lose";

            }

            else if (playerSelection === "paper"){

                if (computerSelection === "scissors") return "lose";

                else if (computerSelection === "rock") return "win";

            }

            else if (playerSelection === "scissors"){

                if (computerSelection === "rock") return "lose";

                else if (computerSelection === "paper") return "win";

            }

        }

        

        function computerSelection() {

            let selection = ["rock", "paper", "scissors"];

            return selection[Math.floor(Math.random() * selection.length)];

        }

        function calcScore(result, playerScore, computerScore) {

            if (result === "win") {

                playerScore += 1;

                console.log("win");

            }

            else if (result === "lose") {

                computerScore += 1;

                console.log("lose");

            }

            else if (result === "draw") {

                playerScore += 1;

                computerScore += 1;

            }


            return [playerScore, computerScore];

        }

        function game() {

            let playerScore = 0;

            let computerScore = 0;

            for (let i = 1; i <= 5; i++) {

                let result = playRound(prompt("Select rock, paper, or scissors!"), computerSelection());

                let scores = calcScore(result, playerScore, computerScore);

                playerScore += scores[0];

                computerScore += scores[1]; 

                console.log(`You have ${playerScore} points! Computer has ${computerScore} points!`);

            }

            playerScore, computerScore = 0, 0;

        }

    </script>


查看完整回答
反對 回復 2023-04-20
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

你兩次定義了這兩個變量,所以現在我很困惑。您是否希望能夠在游戲函數中重用這些變量而無需重新定義它們?因為如果是這樣的話,那么它們應該是全局變量而不是函數參數(您將無法在該函數之外使用函數參數中定義的變量)。



查看完整回答
反對 回復 2023-04-20
  • 2 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號