2015-05-15 2 views
-8
var result = 1 
var counter = 0 
while (counter < 10) { 
    result = result * 2 
    counter += 1 
}; 

console.log(result); 

Я смущен, как результат встречного обновления здесь? Мы увеличиваем счетчик на 1, но как это влияет на результат?Как это работает во время работы блока?

Может кто-нибудь, пожалуйста, опустил его на меня? Я новичок в программировании.

Редактировать: Я знаю, что этот вопрос задан много раз. Я просмотрел много ответов, но не получил информацию, которая мне нужна. У меня очень сомнительное сомнение и я хочу прояснить его, поэтому, пожалуйста, пройдите по этой кнопке вниз. :)

[решаемые]

тот же самый код с цикл.

var result = 1 
for (counter = 0; counter < 10; counter++) { 
    result *= 2; 
}; 
console.log(result); 
+3

Вы видите эту строку? 'result = result * 2' –

+1

' counter' не влияет на 'result', он используется для управления циклом. Каждый раз через цикл «result» умножается на 2, тогда этот результат используется как «результат» в следующий раз. – dan08

ответ

1

result и counter отдельные переменные с разными целями в этом коде.

counter увеличивается как

counter += 1 

, так что в конце концов while состояние

while (counter<10) 

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

Что касается result, каждый раз, когда код в блоке в то время как выполняется, result обновляются путем умножения на 2

result = result*2 

Он «обновляется», так как переменная result была инициализирована вне цикла while, но доступен им. В приведенном выше заявлении он принимает существующую переменную result и умножает ее на 2, а затем сохраняет ее обратно в result.

+0

Эй, я хочу знать, как работает результат? Насколько я понимаю, это происходит следующим образом: В первом повороте это результат 2, но поскольку условие истинно, оно повторяется снова, но на этот раз оно переходит от 2 и дает 4. Условие по-прежнему истинно, и, таким образом, оно дает 8 затем 16 и, наконец, 1024. Но как он дает показатели 2? Сохраняет ли это значение, и когда он повторяет, умножает это значение на 2? Как и после 1-го поворота, он хранит 2, а во втором - кратные 2 * 2 и сохраняет 4 для следующего хода. В следующий ход 4 * 2, а затем сохранит 8 для следующего хода. Это продолжается до тех пор, пока условие не станет ложным, которое – MarineBiologist

+0

находится на 10-м повороте (или когда значение счетчика равно 9), и оно, наконец, дает мне последнее сохраненное значение, которое составляет 1024. Является ли мое рассуждение правильным? :) – MarineBiologist

+0

@MarineBiologist, да, вы, кажется, на правильном пути. См. Мой обновленный ответ в конце относительно переменной результата. – AmmarCSE

1

Вы имеете в виду это:

loop | counter | result | counter < 10 
    1  1   2   yes 
    2  2   4   yes 
    3  3   8   yes 
    4  4   16   yes 
    5  5   32   yes 
    6  6   64   yes 
    7  7   128   yes 
    8  8   256   yes 
    9  9   512   yes 
    10  10   1024  no end of loop 


    console.log(result); -> 1024 
Смежные вопросы