2017-02-19 11 views
-2

когда я пытаюсь Переберите некоторые функции, которые она застрять на randomvariable(), как может случайное число работ на контуре без ввода нужно обновить страницу каждый разкак петля случайное число в JavaScript

function randomvariable() { 
 
    randomvariable = Math.floor(Math.random() * 21); 
 
    document.getElementById("demo").innerHTML = randomvariable; 
 
} 
 

 

 

 
function launchfunctions() { 
 
    var count = 0; 
 
    while (count < 10) { 
 
    randomvariable(); 
 
    count++; 
 

 
    } 
 
} 
 
launchfunctions();
<div id="demo" ></div>

+0

Скорее всего это erroring как 'randomvariable' не объявлена. – Sid

+1

@Sid * redeclared –

+1

@Sid Свойство объявлено и его получение переопределено в функции – Rajesh

ответ

4

Вы переопределение randomvariable, используйте var или позвоните переменное что-то другое.

function randomvariable() { 
    var randomvariable = Math.floor(Math.random() * 21); 
    document.getElementById("demo").innerHTML = randomvariable; 
} 

или

function randomvariable() { 
    mynum = Math.floor(Math.random() * 21); 
    document.getElementById("demo").innerHTML = mynum; 
} 

Хотя обратите внимание, что вы всегда должны использовать var ключевое слово при определении переменных, было опущено во втором примере, чтобы показать, как корректировка только ваше имя переменной может решить эту проблему.

Примечание:

  • Объявление переменной без var сделает глобальный нестрогого режима. Именно по этой причине использование функции var будет работать.
  • Использование тех же имен переменных для функции и переменной делает ваш код запутанным и уменьшает читаемость. Используйте лучшее соглашение об именах.
+0

он работал правильно в начале, тогда он создавал для меня проблему для другой функции, изучая javascript самостоятельно, поэтому у меня мало проблем, когда у меня есть ошибка – zexurity

+0

, когда я превращаю ее в глобальную случайную работу должным образом, но следующая функция у нее есть формула оценки, я получаю NAN в предупреждении, и когда я работаю без var, он работает правильно – zexurity

0

Вы изменяете свойство функции randomvariable переменной с глобальной областью, поэтому, когда поток вводится в функцию randomvariable, свойство изменяется и сообщает об ошибке msg. Если вы используете var, переменная объявляется в пределах области действия, в которой вы находитесь (например, функции).

Я изменил код, чтобы показать случайные числа.

function randomvariable() { 
 
    var randomvariable = Math.floor(Math.random() * 21); 
 
    document.getElementById("demo").innerHTML += randomvariable + "-"; 
 
} 
 

 
function launchfunctions() { 
 
    var count = 0; 
 
    while (count < 10) { 
 
    randomvariable(); 
 
    count++; 
 
    } 
 
}
<html> 
 

 
<body onload="launchfunctions()"> 
 
    <div id="demo"></div> 
 
</body> 
 

 
</html>