Jump to content
  • 0

цикл while


DivMan
 Share

Question

Почему этот код работает 

 

http://learn.javascript.ru/play/kZew4

var num = 2;    var exp = 10;    var result = 1;    var cnt = 1; 	while(cnt <= exp){	result *= num;        cnt++;      }      document.write(result);

а вот этот не работает?

    var num = 2;    var exp = 10;    var result = 1;    var cnt = 1;      while(cnt = cnt < exp){      	result = result * num;        cnt++;      }      document.write(result);
Edited by DivMan
Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

А что требуется получить?

 

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

Edited by Q4Dizzy
Link to comment
Share on other sites

  • 0

while(cnt <= exp){

 

вот верное условие. Пока cnt меньше или равно exp = повторять код, увеличивая cnt на 1 после каждого цикла(инкремент).

 

—-

while(cnt = cnt < exp){

 

в этом случае условие звучит примерно так - пока переменной cnt можно присваивать что-то () - повторять цикл. а присваивать можно всегда, что значит условие всегда истинно. Цикл повторяется, если условие истинно. И так до бесконечности.

Edited by Q4Dizzy
  • Like 1
Link to comment
Share on other sites

  • 0
while(cnt = cnt < exp){  

в этом случае условие звучит примерно так - пока переменной cnt можно присваивать что-то

Не совсем так: сначала идет присвоение, а потом проверяется его результат. При первом заходе в цикл 1 < 10 == true, поэтому cnt присваивается значение true, внутри цикла cnt++ неявно преобразует true в 1 и на выходе из цикла cnt == 2. При втором заходе 2 < 10 — всё равно true, поэтому дальше эта история повторяется бесконечно.

  • Like 1
Link to comment
Share on other sites

  • 0

Ахахах. Я только что понял логику автора. Если

a  = a * b

и

a *= b

являются одним и тем же, то

a <= b

и

a = a < b

тоже одно и то же. Это гениально! Я бы никогда в жизни до такого не дошёл.

  • Like 3
Link to comment
Share on other sites

  • 0

Он писал про такую запись - a = a < b

Ааа, сорри видимо мне поспать пора :) Я если честно даже не ожидал такого подвоха.

 

Кстати js ванильный вообще очень веселый, пересмотрел кучу конф по нему и очень скиловые

разработчики постоянно в прямом эфире касячут на нем, первое что приходит в голову это

просто на сцене такая хрень а второе что более вероятное что чистый js минимально

используют в реальных проектах.

Edited by Sergik+
Link to comment
Share on other sites

  • 0

Кстати js ванильный вообще очень веселый

Что означает этот термин?

Синтаксис в JS ничем не отличается от любого C-подобного языка. Если косячат, значит просто не используют язык в повседневной работе, или не такие уж они скилловые.

Link to comment
Share on other sites

  • 0

 

Кстати js ванильный вообще очень веселый

Что означает этот термин?

Синтаксис в JS ничем не отличается от любого C-подобного языка. Если косячат, значит просто не используют язык в повседневной работе, или не такие уж они скилловые.

 

Не доверять докладчикам не могу, думаю просто на сцене впариваются. Я тоже ничего

сложного в js не нашел, просто его каждый по своему использует. Я даже к скобочкам

привык за пару недель но все равно уйду на кофее но у меня на это свои причины.

Странно но мне он даже начинает потихоньку нравится, сейчас на backbone собираю

приложение учебное так вообще красота :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy