关于为什么我能够访问在函数中创建的变量的问题

问题描述

对于为什么保持事件侦听器按钮可以访问我在函数init()中创建的winningscore变量感到困惑。自从winningscore函数中声明以来,我就曾想过,在其他任何地方都无法访问它。我想念什么?不能抱怨它起作用,而只是想了解为什么会这样。感谢帮助。

let gamePlaying = true;
let activePlayer = 0;
let roundscore = 0;
let scores = [0,0];
init();


diceRolls = []
prevIoUsDiceRoll = 0
let counter = 0

document.querySelector('.btn-roll').addEventListener('click',function() {
    if (gamePlaying) {
    //1. Random number
    let dice = Math.floor(Math.random()*6)+1;
    

    //2. display the result
    let diceDOM = document.querySelector('.dice');
    diceDOM.style.display = 'block';
    diceDOM.src = 'dice-'+ dice + '.png';


    //3. Update the round score IF the rolled number was NOT a 1 or if rolled two 6's in a row
    
        diceRolls.push(dice);
        counteradj = counter++ - 1;
        prevIoUsDiceRoll = diceRolls[counteradj];
        console.log(prevIoUsDiceRoll);
      
    if (dice === 6 && dice === prevIoUsDiceRoll) {
        scores[activePlayer] = 0;
        document.getElementById('score-'+activePlayer).innerHTML = scores[activePlayer]
        nextPlayer();

    } else if (dice !==1) {
        //add score
        roundscore += dice;
        document.querySelector('#current-' + activePlayer).innerHTML = roundscore;
    } 
    else {
        //Next player
        nextPlayer();
    }
}});



document.querySelector('.btn-hold').addEventListener('click',function() {
    if(gamePlaying){
    //Add CURRENT score to GLOBAL score
    scores [activePlayer] += roundscore

    //Update the UI
    document.querySelector('#score-' + activePlayer).textContent = scores[activePlayer];

    //Check if player won the game
    if (scores[activePlayer]>=winningscore){
      document.querySelector('#name-'+activePlayer).textContent = 'Winner!'; 
      document.querySelector('.dice').style.display = 'none';
      document.querySelector('.player-' + activePlayer + '-panel').classList.add('winner');
      document.querySelector('.player-' + activePlayer + '-panel').classList.remove('active');
      gamePlaying = false;
    }
    else {
        nextPlayer();
    }
}});

function nextPlayer (){
    activePlayer === 0 ? activePlayer = 1 : activePlayer = 0;
        roundscore = 0;
        document.getElementById('current-0').textContent = '0';
        document.getElementById('current-1').textContent = '0';
        document.querySelector('.player-0-panel').classList.toggle('active');
        document.querySelector('.player-1-panel').classList.toggle('active');
        document.querySelector('.dice').style.display = 'none';
}

document.querySelector('.btn-new').addEventListener('click',init);

function init() {
        winningscore = prompt ('Set Winning score');
        scores = [0,0];
        activePlayer = 0; 
        roundscore = 0;
        gamePlaying = true;
        document.querySelector('.dice').style.display = 'none';
        document.getElementById('score-0').textContent = '0';
        document.getElementById('score-1').textContent = '0';
        document.getElementById('current-0').textContent = '0';
        document.getElementById('current-1').textContent = '0';
        document.getElementById('name-0').textContent = 'Player 1';
        document.getElementById('name-1').textContent = 'Player 2';
        document.querySelector('.player-0-panel').classList.remove('winner');
        document.querySelector('.player-1-panel').classList.remove('winner');
        document.querySelector('.player-0-panel').classList.remove('active');
        document.querySelector('.player-1-panel').classList.remove('active');
        document.querySelector('.player-0-panel').classList.add('active');
     };

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...