Проблема с переменной областью в JavaScript - PullRequest
1 голос
/ 26 марта 2019

Я новичок в javascript, у меня проблемы с программой подсчета, и я считаю, что это может быть проблема с переменной областью действия.

var count = 0; {
    function gimmeRandom() {
        var rand = Math.floor(Math.random() * 10) + 1;
        count++;
    }

    function countToRandom() {
        for (count = 1; count <= rand; count++) {
            console.log(count);
        }
    }

    console.log("Counting to a random number");
    gimmeRandom();
    countToRandom();
    console.log("Counting to another random number");
    gimmeRandom();
    countToRandom();
    console.log("There has been " + count + " random numbers used");
}

Ответы [ 3 ]

1 голос
/ 26 марта 2019

Вы объявляете var rand внутри gimmeRandom, вы не можете получить к нему доступ в countToRandom. Вы, вероятно, хотите глобальную переменную, как вы сделали с count.

0 голосов
/ 26 марта 2019

Вы определяете rand, который будет ограничен в этой функции:

    function gimmeRandom() {
         var rand = Math.floor(Math.random() * 10) + 1;
         count++;
    }

А затем попробуйте использовать его в другой функции:

    function countToRandom() {
        for (count = 1; count <= rand; count++) {
            console.log(count);
        }
    }

Как видно из этого вопроса:

Какова область видимости переменных в JavaScript?

Ваша переменная rand, которую вы определяете, получает локальную область видимости для функции gimmeRandom () и поэтому не может использоваться вне этой функции.

Чтобы использовать его в разных функциях, вы, вероятно, захотите, чтобы переменная имела глобальную область видимости

0 голосов
/ 26 марта 2019

Объявление var внутри функции ограничивает эту переменную функции. У вас есть два варианта.

  1. Поскольку сначала вы вызываете gimmeRandom, удалите ключевое слово var, и оно будет автоматически глобальным.

var count = 0;     

{                                               
function gimmeRandom()                                              
{                                               
  rand = Math.floor(Math.random()*10)+1;                                                
  count++;                                              
}                                               

function countToRandom()                                                
{                                               
  for (count = 1; count <= rand; count++)                                               
  {                                             
     console.log(count);                                                
  }                                             
}                                               

console.log("Counting to a random number");                                             
gimmeRandom();                                              
countToRandom();                                                
console.log("Counting to another random number");                                               
gimmeRandom();                                              
countToRandom();                                                
console.log("There has been "+count+" random numbers used");                                                
}


  1. Определите var rand в верхней части страницы, чтобы сделать его глобальным.

var count = 0;     
var rand = 0;

{                                               
function gimmeRandom()                                              
{                                               
  rand = Math.floor(Math.random()*10)+1;                                                
  count++;                                              
}                                               

function countToRandom()                                                
{                                               
  for (count = 1; count <= rand; count++)                                               
  {                                             
     console.log(count);                                                
  }                                             
}                                               

console.log("Counting to a random number");                                             
gimmeRandom();                                              
countToRandom();                                                
console.log("Counting to another random number");                                               
gimmeRandom();                                              
countToRandom();                                                
console.log("There has been "+count+" random numbers used");                                                
}
...