2016-03-15 3 views
0

Я не понимаю этот код.Объявление переменной внутри цикла while javascript

var timesTable; 
while ((timesTable = prompt("Enter the times table", -1)) != -1) {.....} 

Почему необходимо объявить переменную раньше? Я пытался это сделать:

while ((var timesTable = prompt("Enter the times table", -1)) != -1) {.....} 

но это не работает. В чем проблема? Что-то о сфере видимости?

Полная программа:

function writeTimesTable(timesTable, timesByStart, timesByEnd) { 
     for (; timesByStart <= timesByEnd; timesByStart++) { 
      document.write(timesTable + " * " + timesByStart + " = " + timesByStart * timesTable + "<br />"); 
      } 
     } 
    var timesTable; 
    while ((timesTable = prompt("Enter the times table", -1)) != -1) { 
     while (isNaN(timesTable) == true) { 
      timesTable = prompt(timesTable + " is not a " + "valid number, please retry", -1); 
     } 
     document.write("<br />The " + timesTable + " times table<br />"); 
     writeTimesTable(timesTable, 1, 12); 
    } 

Спасибо авансом.

+1

Определением «не работает». – deceze

ответ

5

Вы не можете определить переменную в цикле while, такой конструкции в javascript нет;

enter image description here

Причина, по которой вы можете определить его в for цикла происходит потому, что цикл имеет конструкцию инициализации определена.

for (var i = 0; i < l; i++) { ... } 
//  |   |  | 
// initialisation |  | 
//   condition | 
//     execute after each loop 

В принципе, это не сработает, потому что это неверный код.

Вы можете, однако, полностью удалить декларацию var, но это по существу сделает переменную global и считается плохой практикой.

Именно поэтому вы видите var заявления прямо над петлей while

Смежные вопросы