2013-08-27 4 views
1

В этом JavaScript lesson на Codecademy требуется написать делать/в то время как цикл, я написал это, и она проходитЯвляется ли этот код JavaScript неправильным?

var getToDaChoppa = function(b){ 
    var a = b; 
    do{ 
    console.log("Dunno!"); 
    } while (a < b); 

}; 

getToDaChoppa(25); 

Но если смотреть внимательно на мой код, я думаю, что я, возможно, сделал его полностью неправильно, так как a не имеет определенного значения?

Или поскольку переменная b является локальной внутри функции, она не влияет на аргумент b, которому передается значение 25?

Большое спасибо заранее.

+3

Да, это неправильно, так как ничто не изменяет ни a, ни b – mplungjan

+0

Поскольку 'a = b' и ни один из них не изменен позже,' a

+0

Вот почему он проходит, поскольку они хотели, чтобы вы проходили цикл только один раз – mplungjan

ответ

4

Он просто делает только одна итерация, потому что, когда do whileloop начинается, условие не выполняется, потому что a и b равны. Так

var getToDaChoppa = function(b){ 
    var a = b; 
    do{ 
    console.log("Dunno!"); 
    } while (a < b); //25 < 25, exit 

}; 

getToDaChoppa(25); 

Если вы хотите попробовать dowhile петли попробовать с каким-то трюком, как

var getToDaChoppa = function(b){ 
    var a = 10; //or whatever minor than b 
    do{ 
    console.log("Dunno!"); 
    a++; //when it reaches 25 or whatever value you set it breaks the loop 
    } while (a < b); 

}; 

Это просто пример, чтобы вы выяснить, как do while работает

3

Код в порядке, логика неправильная. Вы назначаете a значение b, поэтому они всегда будут равны.

0

Является ли этот код JavaScript неправильным?

зависит от проблемы, которую вы хотели бы решить.

Это выглядит довольно бесполезно для меня, так как тело цикла всегда будет выполняться один раз.

while (a < b); всегда будет возвращаться false из-за var a = b; и a не изменяется в цикле.

+3

a

+0

да ... мой мозг искривился из-за удивительного метода-имени –

1

Вы присваивающие от b до a с указанием var a = b;

Цикл будет запускаться один раз, так как вы используете цикл do while.

Код не является ошибочным, он предназначен для иллюстрации того, что условие оценивается после первой итерации цикла.

http://jsfiddle.net/puleos/QXC9z/

0

Я думаю, что вы после:

var getToDaChoppa = function(b){ 
    var a = 0; 
    do{ 
    console.log("Dunno!"); 
    a++; 
    } while (a < b); 

}; 

Как уже упоминалось в других эмблем, если a = b цикл будет выполняться только один раз. Эта версия должна запускать ожидаемое количество раз (если это действительно то, что ожидается).

+1

Это не так, но да, вы правы – mplungjan

0

Поскольку вопрос говорит: «Ваш цикл должен печатать строку по вашему выбору редактору один раз», я думаю, что это правильно. Ваш код напечатает строку «Dunno!» ровно один раз.

Однако a и b переменных и цикл do..while могли бы также не существуют, они лишь добавляя ненужную сложность к коду, который может быть упрощен до одной линии (console.log() вызова).

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