![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 1 Всего: 36 |
Всем привет!
Пожалуйста, помогите - что такое постинкремент, постдекремент, преинкремент и предекремент в JS? меня попрасили продемонстрировать результаты их работы с выводом на экран. PS прошу администрацию не перемещать в ЦП. т.к. за меня не нужно решать проблему, а я только хочу услышать ответ |
|||
|
||||
| pythonwin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 1 Всего: 36 |
спасибо, albertn за помощь! |
||||
|
|||||
| albertn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 1 Всего: 34 |
если не имеет значения, то лучше использовать префиксную форму записи, т.к. при этом не создаются копии объектов
|
|||
|
||||
| Zeroglif |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
Неизвестно, как именно (практически) работает интерпретатор в том или ином браузере кас. пост-ин(де)кремента. Теоретически (в ES) для данного выражения ни объектов, ни их копий нет. Если попробовать, допустим, на скорость работы (миллион циклов), то я разницы вообще не вижу или она минимальна. |
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 1 Всего: 36 |
насчет копий - я не знаю, но вот один раз правил чужой код, где ++i и i++, --i и i-- часто использовались и самые проблемы были с "пре" (++i, --i) |
|||
|
||||
| albertn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 1 Всего: 34 |
Я конечно про JS утверждать не буду, но в Си при постфиксном инкременте объекта создаестя временная копия оригинального объекта для участия в выражениях, а сам объект инкрементируется. А разница во времени уже будет зависеть от качества оптимизации компилятороа. |
|||
|
||||
| Zeroglif |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
albertn
Разница только в возвращаемом значении, что происходит до этого - неизвестно, можно только посмотреть алгоритм ECMAScript, но и там не найдём ни копий, ни объектов (повторяюсь однако). По уму с точки зрения оптимизации интерпретатор должен сравнять пост с пре, если его значение сразу не потребовалось. Но даже если сделать loop-тест с присвоением (x = i++) - разницы с (x = ++i) не вижу. Я бы вашу мысль:
сократил бы до:
Просто чтобы не было лишних вопросов, особенно у тех, кто пришёл из других языков. Тем более, что и в javascript-тусовке есть определённый тренд не использовать пост-ин(де)кремент, например тот же D.Crockford на него катит. Мне лично это напоминает анекдот про "...а осадок остался". |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
Всегда использую только пост-. Про создания объектов впервые слышу
Автор, примеры все еще нужны? |
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 1 Всего: 36 |
аналогично нет - спасибо, сделал сам |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |