2015-12-04 4 views
-2

Эта функция исходит из книги «Элегантный Javascript», глава 3, функция.Javascript перевод на общий язык для цикла

Я не понимаю поведение скрипта.

Вот «цикл» с невыполнимой миссией, чтобы значение счетчика, которое равно 0 и меньше 0.

В начале я думал, что это будет блокировать программу, но программа умна. Как он охватывает этот цикл. Вот фрагмент:

var power = function (base, exponent) { 
    var result = 1; 
    for(var count = 0; count < exponent; count ++) { 
//repeat as many as needed the self multiplication. 
    console.log("count = ", count); 
     result *= base; 
     console.log(result); 

    } 
    return result; 
}; 
console.log("finally we get the number ", power(2, 0)); 
/* A little question with exponent = 0 
Why is that not an error. It is impossible to initiate 
with count = 0 && count < exponent. 
Weird.*/ 

Выход в repl.it

Native Browser JavaScript 

finally we get the number 1 
+0

Даже программа знает, что это невозможно, поэтому он пропускает цикл for и возвращает '1', который является init перед циклом for. – fuyushimoya

+0

@fuyushimoya Конечно, но можно ли понять, как? – kouty

+1

Условие условие цикла цикла, которое является 'count fuyushimoya

ответ

0

Поскольку count < exponent или скорее 0 < 0 является false, так что цикл не выполняется и возвращает значение, когда она result был определен как 1:

var result = 1; 
for(var count = 0; false; count ++) { 
    // This doesn't run 
} 
return result; // So it's still 1 
0

Благодаря fuyushimoya, я underst и:

Первое утверждение внутри цикла наступает после инициализации переменного называется «результат»,

я ошибся, полагая, что текст внутри скобки для цикла означает:

Мы имеют массив значений count: [первый - 0, а последний - показатель -1]. Как я сказал в индексе 0, элемент count равен «0», а длина этого массива «экспонента». Поэтому, если массив пуст, этот оператор не может быть истинным, потому что индекс 0 не существует, поскольку программа будет остановлена.

Но теперь я наконец-то понял, что:

Текст внутри скобок для цикла говорит: Если higest значение счетчика меньше показателя и меньше 0, то мы увеличиваем значение результат: результат * основа. - Но в случае мощности (2, 0) условие не проверяется, то нет никакого приращения. Значение, называемое «результат», оставалось в исходной ситуации, то есть до начала цикла.

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