цикл JavaScript - PullRequest
       3

цикл JavaScript

0 голосов
/ 29 декабря 2010

Я написал этот код JS, и если я хочу написать, как цикл, какой цикл лучше? цикл while, цикл for, цикл do-while.

 var loan = 1000000;
 var amoyear = 6000;
 var answer = loan / amoyear;
 document.write("A loan of 1000000 SEK is paid after " 
  + Math.ceil(answer) + " years if installment is 500 kr / month. ");

Это очень легко, но я не могу понять это.

Ответы [ 5 ]

3 голосов
/ 29 декабря 2010

(Подходя к вашему вопросу как к общему вопросу о конструкциях цикла и о том, как они «обычно» используются)

Это зависит от того, какое у вас условие выхода ...

  • Используйте цикл for, если вы хотите выполнить итерацию фиксированное количество раз и вам нужно использовать увеличивающееся (или убывающее) значение в вашем цикле
  • Используйте цикл while, если ваше условие выхода может быть выражено как логическое выражение, а минимальное число итераций вашего цикла равно нулю (поскольку логическое выражение находится перед кодом цикла)
  • Используйте цикл do...while, если ваше условие выхода может быть выражено как логическое выражение, а минимальное количество итераций вашего цикла равно единице (поскольку логическое выражение находится после кода цикла)
0 голосов
/ 29 декабря 2010

Используйте для цикла, когда вы теперь количество элементов перед циклом. Например, зацикливание на элементах массива или похожего на массив объекта:

var items = [];
....
for(var i = 0; i < items.length; i++){
...
}

Если вы перебираете поля какого-либо объекта, вы можете использовать следующую форму цикла for:

var obj = {};
...
for(var field in object){
 //access each value as object.field
}

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

цикл do-while используется также, когда вы не знаете термин, когда цикл завершен, но вам нужно выполнить итерацию хотя бы один раз Сравните:

do{
 //do something, then check the term
}while(check the term)

против

while(check the term){
 //do something 
}

PS: есть форма цикла for - так называемый foreach, но я не уверен, что он стандартный, поэтому я пока не использую его.

0 голосов
/ 29 декабря 2010

Грубый, общий ответ на ваш вопрос (без учета вашего конкретного варианта использования):

Если вы хотите выполнить цикл через интервал, увеличивая / уменьшая значение на фиксированную величину на каждом шаге, тогдаиспользуйте цикл for, поскольку он очень идиоматичен для этого (почти в любом императивном или объектно-ориентированном языке).

Для почти всех других целей используйте цикл while.

I 'Я бы сказал, что do-while не очень полезен и встречается не часто, даже если вы, конечно, тоже можете найти ситуации для этого.Но некоторый небольшой рефакторинг может часто превращать его в цикл while, который (обычно) в любом случае более читабелен.

0 голосов
/ 29 декабря 2010

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

Надеюсь, это не домашняя работа :) 1003 *

Вот ответ:

 var loan = 1000000;
 var amoyear = 6000;
 var answer;
 for(answer=1; amoyear*answer<=loan; answer++);

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

0 голосов
/ 29 декабря 2010

Просто поверхностно взглянем на ваш неформатированный код ... похоже, вы хотите сделать цикл, чтобы рассчитать количество времени, которое займут различные кредиты, чтобы погасить. Когда вы работаете с числами, обычно проще работать с циклом for. Оба приведенных ниже примера вычисляют время для погашения ссуд между 100 000 и 20 000 000 долларов США (с интервалом в 100 000 долларов США)

var maxLoanAmount=20000000;
var amoyear = 6000; 
for (var loan = 100000; loan<=maxLoanAmount; loan = loan + 100000){

    var answer = loan / amoyear; 
    document.write("A loan of " + loan  + " SEK is paid after " + Math.ceil(answer) + " years if installment is " + (amoyear/12) + " kr / month. ");
}

хотя вы можете легко сделать то же самое с помощью цикла while.

var maxLoanAmount=20000000;
var amoyear = 6000; 
var loan = 100000;
while (loan<=maxLoanAmount){
    var answer = loan / amoyear; 
    document.write("A loan of " + loan  + " SEK is paid after " + Math.ceil(answer) + " years if installment is " + (amoyear/12) + " kr / month. ");
    loan = loan + 100000;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...