Javascript 将变量更改为全局,以便外部警报功能可以使用它

Javascript 将变量更改为全局,以便外部警报功能可以使用它,javascript,html,css,Javascript,Html,Css,作为一个家庭项目,我正在用JavaScript为我的学校编写一个小游戏(石头剪刀布),最近我被卡住了。我试图将原始(let)变量更改为全局变量,以便外部函数可以看到它们的值。 在每一轮中,pScore的值增加,分数更新 我试图将变量从let更改为var,但它不起作用 const game = () => { let pScore = 0; //player score let cScore = 0; //computer score var mScore = 12;

作为一个家庭项目,我正在用JavaScript为我的学校编写一个小游戏(石头剪刀布),最近我被卡住了。我试图将原始(
let
)变量更改为全局变量,以便外部函数可以看到它们的值。 在每一轮中,
pScore
的值增加,分数更新

我试图将变量从
let
更改为
var
,但它不起作用

const game = () => {
    let pScore = 0; //player score
    let cScore = 0; //computer score
    var mScore = 12; // maximal score

    // the Function
    const updateScore = () => {
        const playerScore = document.querySelector(".player-score p");
        const computerScore = document.querySelector(".computer-score p");
        playerScore.textContent = window.pScore;
        computerScore.textContent = cScore;
    };

    //Check for Paper
    if (playerChoice === "paper") {
        if (computerChoice === "scissors") {
            winner.textContent = "computer wins! :(";
            cScore++;
            updateScore();
            return;
        } else {
            winner.textContent = "you won! :)";
            pScore++;
            updateScore();
            if (pScore === mScore) {
                finalScore();
            }
            return;
        }
    }
};

//The Outer function
function timer() {
    var countDown = new Date(Date.now() + 60000).getTime();
    var x = setInterval(
        function () {
            var now = new Date().getTime();
            var distance = countDown - now;

            var seconds = Math.floor((distance % (1000 * 60)) / 1000);

            document.getElementById("timer").innerHTML = seconds;

            if (distance < 0) {
                clearInterval(x);
                alert(un + ' Time is up!' + alert(playerScore.textContent));
                location.reload(true);
            }
        }, 1000
    );
}
const游戏=()=>{
让pScore=0;//玩家得分
设Ccore=0;//计算机分数
var mScore=12;//最大分数
//功能
const updateScore=()=>{
const playerScore=document.querySelector(“.player score p”);
const computerScore=document.querySelector(“.computerScore p”);
playerScore.textContent=window.pScore;
computerScore.textContent=cScore;
};
//检查纸张
如果(播放选择==“纸张”){
如果(计算机选择==“剪刀”){
winner.textContent=“计算机赢了!:(”;
cScore++;
updateScore();
返回;
}否则{
winner.textContent=“你赢了!:)”;
pScore++;
updateScore();
如果(pScore==mScore){
finalScore();
}
返回;
}
}
};
//外部功能
函数计时器(){
var countDown=新日期(Date.now()+60000.getTime();
var x=设定间隔(
函数(){
var now=new Date().getTime();
var距离=倒计时-现在;
var秒=数学楼层((距离%(1000*60))/1000);
document.getElementById(“计时器”).innerHTML=seconds;
如果(距离<0){
净间隔(x);
警报(un+“时间到了!”+警报(playerScore.textContent));
位置。重新加载(true);
}
}, 1000
);
}
错误:未定义pScore或playerScore

我想倒计时功能达到pScore,然后发出警报
最后更新的分数

我已对您的代码进行了轻微的重新排列,以使其正常工作

更改

  • window.pScore
    中删除了
    窗口。
    部分。pScore变量不是真正的全局变量,而是
    game()
    函数中的全局变量
  • playerScore
    computerScore
    变量从
    game()
    函数中移出,并使其可供
    timer()
    函数访问
const playerScore=document.querySelector(“.player score p”);
const computerScore=document.querySelector(“.computerScore p”);
康斯特游戏=()=>{
让pScore=0;//玩家得分
设Ccore=0;//计算机分数
var mScore=12;//最大分数
//功能
const updateScore=()=>{
playerScore.textContent=pScore;
computerScore.textContent=cScore;
};
//检查纸张
如果(播放选择==“纸张”){
如果(计算机选择==“剪刀”){
winner.textContent=“计算机赢了!:(”;
cScore++;
updateScore();
返回;
}否则{
winner.textContent=“你赢了!:)”;
pScore++;
updateScore();
如果(pScore==mScore){
finalScore();
}
返回;
}
}
};
//外部功能
函数计时器(){
var countDown=新日期(Date.now()+60000.getTime();
var x=设定间隔(
函数(){
var now=new Date().getTime();
var距离=倒计时-现在;
var秒=数学楼层((距离%(1000*60))/1000);
document.getElementById(“计时器”).innerHTML=seconds;
如果(距离<0){
净间隔(x);
警报(un+“时间到了!”+警报(playerScore.textContent));
位置。重新加载(true);
}
}, 1000
);
}

interval函数的作用域中没有
playerScore
。也许您应该简单地添加
constplayerscore=document.querySelector(“.player score p”)在使用它之前。另外,这一行位于
updateScore
playerScore.textContent=window.pScore-为什么
窗口
?谢谢你的建议,事实上我确实用这种方式尝试过,效果非常好。当时间到了,警报功能会根据要求显示球员的实际得分。再次感谢您!
    const playerScore = document.querySelector(".player-score p");
    const computerScore = document.querySelector(".computer-score p");
    const game = () => {
    let pScore = 0; //player score
    let cScore = 0; //computer score
    var mScore = 12; // maximal score

    // the Function
    const updateScore = () => {
        playerScore.textContent = pScore;
        computerScore.textContent = cScore;
    };

    //Check for Paper
    if (playerChoice === "paper") {
        if (computerChoice === "scissors") {
            winner.textContent = "computer wins! :(";
            cScore++;
            updateScore();
            return;
        } else {
            winner.textContent = "you won! :)";
            pScore++;
            updateScore();
            if (pScore === mScore) {
                finalScore();
            }
            return;
            }
        }
    };

//The Outer function
function timer() {
    var countDown = new Date(Date.now() + 60000).getTime();
    var x = setInterval(
        function () {
            var now = new Date().getTime();
            var distance = countDown - now;

            var seconds = Math.floor((distance % (1000 * 60)) / 1000);

            document.getElementById("timer").innerHTML = seconds;

            if (distance < 0) {
                clearInterval(x);
                alert(un + ' Time is up!' + alert(playerScore.textContent));
                location.reload(true);
            }
        }, 1000
    );
}