Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> постинкремент, постдекремент, преинкремент, предекремент 
V
    Опции темы
pythonwin
Дата 8.12.2006, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 1
Всего: 36



Всем привет!
Пожалуйста, помогите - что такое постинкремент, постдекремент, преинкремент и предекремент в JS?

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

PS прошу администрацию не перемещать в ЦП. т.к. за меня не нужно решать проблему, а я только хочу услышать ответ smile
PM WWW GTalk Jabber   Вверх
pythonwin
Дата 8.12.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 1
Всего: 36



Цитата

могу привести пример из си в данной последовательности:
i++; i--; ++i; --i

Цитата

инкримент - увеличение на единицу (++), декримент уменьшение на единицу (--)


спасибо, albertn за помощь!
PM WWW GTalk Jabber   Вверх
albertn
Дата 8.12.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 1
Всего: 34



если не имеет значения, то лучше использовать префиксную форму записи, т.к. при этом не создаются копии объектов
PM WWW ICQ   Вверх
Zeroglif
Дата 8.12.2006, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(albertn @  8.12.2006,  11:16 Найти цитируемый пост)
не создаются копии объектов

Неизвестно, как именно (практически) работает интерпретатор в том или ином браузере кас. пост-ин(де)кремента. Теоретически (в ES) для данного выражения ни объектов, ни их копий нет. Если попробовать, допустим, на скорость работы (миллион циклов), то я разницы вообще не вижу или она минимальна.
PM MAIL WWW   Вверх
pythonwin
Дата 11.12.2006, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 1
Всего: 36



Цитата(Zeroglif @  8.12.2006,  17:39 Найти цитируемый пост)

Неизвестно, как именно (практически) работает интерпретатор в том или ином браузере кас. пост-ин(де)кремента. Теоретически (в ES) для данного выражения ни объектов, ни их копий нет. Если попробовать, допустим, на скорость работы (миллион циклов), то я разницы вообще не вижу или она минимальна. 

насчет копий - я не знаю, но вот один раз правил чужой код, где ++i и i++, --i и i-- часто использовались и самые проблемы были с "пре" (++i, --i)
PM WWW GTalk Jabber   Вверх
albertn
Дата 11.12.2006, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 1
Всего: 34



Цитата(Zeroglif @ 8.12.2006,  14:39)
Цитата(albertn @  8.12.2006,  11:16 Найти цитируемый пост)
не создаются копии объектов

Неизвестно, как именно (практически) работает интерпретатор в том или ином браузере кас. пост-ин(де)кремента. Теоретически (в ES) для данного выражения ни объектов, ни их копий нет. Если попробовать, допустим, на скорость работы (миллион циклов), то я разницы вообще не вижу или она минимальна.

Я конечно  про JS утверждать не буду, но в Си при постфиксном инкременте объекта создаестя временная копия оригинального объекта для участия в выражениях, а сам объект инкрементируется. А разница во времени уже будет зависеть от качества оптимизации компилятороа.
PM WWW ICQ   Вверх
Zeroglif
Дата 11.12.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



albertn

Разница только в возвращаемом значении, что происходит до этого - неизвестно, можно только посмотреть алгоритм ECMAScript, но и там не найдём ни копий, ни объектов (повторяюсь однако). По уму с точки зрения оптимизации интерпретатор должен сравнять пост с пре, если его значение сразу не потребовалось. Но даже если сделать loop-тест с присвоением (x = i++) - разницы с (x = ++i) не вижу.

Я бы вашу мысль:

Цитата

если не имеет значения, то лучше использовать префиксную форму записи, т.к. при этом не создаются копии объектов

сократил бы до:

Цитата

если не имеет значения, то лучше использовать префиксную форму записи

Просто чтобы не было лишних вопросов, особенно у тех, кто пришёл из других языков. Тем более, что и в javascript-тусовке есть определённый тренд не использовать пост-ин(де)кремент, например тот же D.Crockford на него катит. Мне лично это напоминает анекдот про "...а осадок остался". smile
PM MAIL WWW   Вверх
Aliance
Дата 11.12.2006, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Всегда использую только пост-. Про создания объектов впервые слышу smile В JS явно не так )

Автор, примеры все еще нужны?
PM MAIL WWW ICQ Skype   Вверх
pythonwin
Дата 12.12.2006, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 1
Всего: 36



Цитата(Aliance @  11.12.2006,  19:16 Найти цитируемый пост)
Всегда использую только пост-.

аналогично smile
Цитата(Aliance @  11.12.2006,  19:16 Найти цитируемый пост)
Автор, примеры все еще нужны? 

нет - спасибо, сделал сам smile

PM WWW GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0477 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.