Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Про операторы ветвления (https://javascript.ru/forum/offtopic/48041-pro-operatory-vetvleniya.html)

der-coder 17.06.2014 16:45

Про операторы цикла
 
for
do
while

- все ли они незаменимы?
заменимость - в смысле аналогичное выражение через другие операторы

cyber_2.0 17.06.2014 16:47

der-coder,
Цитата:

Сообщение от der-coder
- все ли они незаменимы?

http://learn.javascript.ru/recursion

смотря зачем?

l-liava-l 17.06.2014 16:56

никогда не юзал do while, он жэ не уодбный...

der-coder 17.06.2014 16:58

Цитата:

Сообщение от l-liava-l (Сообщение 316950)
никогда не юзал do while, он жэ не уодбный... или быстрее отрабатывает чем for?

- вот чтото подобное душа ожидает услышать, что бывают такие суровые кодеры которые никогда

cyber_2.0 17.06.2014 17:12

еще как вариант
https://github.com/kobezzza/Collecti...-Collection%3F

nerv_ 17.06.2014 18:22

Цитата:

Сообщение от l-liava-l
никогда не юзал do while, он жэ не уодбный...

Причем тут "удобный\неудобный"? :) Разница между ним и обычным while в том, что условие проверяется после исполнения первой итерации.

Sweet 17.06.2014 18:42

Цитата:

Сообщение от l-liava-l
никогда не юзал do while, он жэ не уодбный...

Использовал пару раз, когда был соответствующий кейс (т.е. нужно было сначала что-то выполнить, а потом проверить). Не то, чтобы он неудобный. Скорее ситуаций, когда он нужен очень мало.

l-liava-l 17.06.2014 18:44

nerv_,
Sweet,
Видимо не правильно выразился, это и имел ввиду отчаасти)
Я вообще вайл не помню когда приходилось юзать

der-coder 17.06.2014 18:50

Цитата:

Сообщение от nerv_ (Сообщение 316960)
Причем тут "удобный\неудобный"? :) Разница между ним и обычным while в том, что условие проверяется после исполнения первой итерации.

do - как он эмулируется иными операторами?

Aetae 17.06.2014 22:55

for - универсален, вариации while - короткие версии для подходящих случаев.
Вон l-liava-l везде только for использует.
А мне например наоборот неприятно, когда фигачат длинный for там, где коротенький while вписался бы в самый раз.
На обычный while у меня приходится чуть ли не половина всех циклов.(хотя последнее время циклы пишу всё меньше)

Цитата:

Сообщение от der-coder (Сообщение 316965)
do - как он эмулируется иными операторами?

Например:
for(var condition = true; condition; condition = условие){
    тело
}
do{
    тело
}while( условие )
А с включениями в тело - придумать можно что хошь.

l-liava-l 17.06.2014 23:13

Цитата:

do - как он эмулируется иными операторами?
ой как хорошо делается генераторами)
Но пока не кошерно, хотя моззила давно уже поддерживает их... эх

Gozar 18.06.2014 01:20

Цитата:

Сообщение от Sweet
когда он нужен очень мало.

do while можно легко эмулировать через while. Зачем его реализовали? наверное, чтобы было! Хотя по мне, лучше бы пораньше ajax реализовали, нежели do while, которым почти никто не пользуется.

var is = true;
while(is) {

alert(1)
if (is) {
  is = false;
}
}

Aetae 18.06.2014 01:35

Gozar, do while - язык, ajax - браузерное api. 0_o
Или я не разглядел сарказма?

moron 18.06.2014 01:55

http://jsfiddle.net/n7C8d/ пускай надумано, но первый вариант с do..while как-то мимишней. Вобще while красивый, когда есть итератор. В противном случае приходится делать нечто вроде инкремента или флага внутри, что некрасиво и укладывается в опператоры for'a. Да и вобще не все ли равно О_о
п.с: почему циклы назвали операторами ветвления?

Gozar 18.06.2014 11:23

Цитата:

Сообщение от Aetae
do while - язык, ajax - браузерное api.

В этой теме есть что обсуждать? Я с тобой полностью согласен do while - язык, ajax - браузерное api.

der-coder 18.06.2014 11:36

Цитата:

Сообщение от Gozar (Сообщение 317017)
Зачем его реализовали? наверное, чтобы было!

господа кодеры, котелось бы ВЫВОД экспретов получить

что из них лишнее и легко реализуется иными средствами
и что основное

я предполагаю что for универшален, и может заменить ВСЕ другие циклы
поправьте если чо

получается что for - для итераций по "списку", а for in для итераций по "набору-группе"

Gozar 18.06.2014 14:49

Цитата:

Сообщение от der-coder
что из них лишнее

Ничего. Оно не лишнее, оно мало востребованное.

Плаванье: брасом, кролем, баттерфляем, на спине, дельфином. Что из этих видов плаванья лишнее?

Aetae 18.06.2014 19:15

der-coder, смотри мой последний пост на предыдущей странице.

der-coder 18.06.2014 19:39

Цитата:

Сообщение от Aetae (Сообщение 317159)
der-coder, смотри мой последний пост на предыдущей странице.

пионер всё понял -

for - он как и его близнец for-in - они как я уже говорил по сути есть удобные счетчики перебирающие массив или группу

но whill do - это низкоуровневое основное

kobezzza 18.06.2014 19:56

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

for (var a = true; a;) {
    ...
}


Специально для обхода сущностей существует 2 вида цикла: for in и for of (причём это самый универсальный итератор, т.к. он работает с протоколом @@iterator).

А вообще (ИМХО) для обхода лучше юзать итераторы, а не плясать с циклами, т.к. это удобнее и нагляднее.

[1, 2, 3].forEach(() => { ... })

der-coder 18.06.2014 20:24

Цитата:

Сообщение от kobezzza (Сообщение 317164)

Специально для обхода сущностей существует 2 вида цикла: for in и for of (причём это самый универсальный итератор, т.к. он работает с протоколом @@iterator).


for of - а что за хрень такая и где бы по русски про нее?

moron 18.06.2014 21:13

Цитата:

А вообще (ИМХО) для итераций лучше юзать итераторы, а не плясать с циклами, т.к. это удобнее и нагляднее.

[1, 2, 3].forEach(() => { ... })
Я всегда расматривали итератор как поведенческий паттерн(нечто позволяющее получить след элемент и сброс текущей позиции). А forEach больше похож на просто метод О_о Для меня это необычный взгляд.
Правильна ли моя позиция?

kobezzza 19.06.2014 11:51

Цитата:

Сообщение от moron (Сообщение 317170)
Я всегда расматривали итератор как поведенческий паттерн(нечто позволяющее получить след элемент и сброс текущей позиции). А forEach больше похож на просто метод О_о Для меня это необычный взгляд.
Правильна ли моя позиция?

Есть паттерн (или же ещё называют протокол) "итератор", он делает то, что вы говорите. А ещё термин "итератор" применяют к функциональным методам, вроде forEach, map, reduce и т.д.

Вообще итератор - это некоторое программное API, которое предоставляет возможность итерационных операций над коллекциями.

kobezzza 19.06.2014 11:52

Цитата:

Сообщение от der-coder (Сообщение 317168)
for of - а что за хрень такая и где бы по русски про нее?

Это новшество ECMAScript6, нативно работает пока только в FF, почитать можно на mdn.

nerv_ 19.06.2014 11:56

Цитата:

Сообщение от kobezzza
А вообще (ИМХО) для обхода лучше юзать итераторы, а не плясать с циклами, т.к. это удобнее и нагляднее.

они медленнее...

kobezzza 19.06.2014 12:13

Цитата:

Сообщение от nerv_ (Сообщение 317235)
они медленнее...

Ну я то юзаю Collection :p


Часовой пояс GMT +3, время: 07:20.