Год назад девочка перевела статью про подходы к оптимизации javascript кода. Про мелочные по сути вещи (использование arguments, switch-case, try-catch, for-in). Запустила тесты сегодня, через год, увидела что проседания производительности по этим пунктам нет. Статья на Хабре https://habrahabr.ru/post/319936/
Мои пять копеек к этому вопросу. Если бы ты написал оптимизированный за счет циклов, или отказался от for-in по причине “оптимизации”, то имел бы сегодня код, который не имеет эффекта оптимизации, но наделен деформациями, необходимыми. Эти деформации могут усложнять понимание кода, особенно для новичков.
Хочешь писать код качественно - пиши его в первую очередь для людей. Оптимизируй для понимания человека (меньше связей, меньше ветвлений, проще функции). Избегай однозначно медленной работы с DOM-мом, но ни в коем случае не в ущерб читаемости.
Оптимизация скорости выполнения кода - это то, что зачастую делается после того как проект запущен, а не на начальном этапе написания. Необходимость оптимизаций возникает чаще не в тех местах где бы это можно было предсказать когда код только начинаешь писать.
Сталкиваясь с проблемой производительности, даже не задумывайся оптимизировать работу с массивами (например замена forEach на цикл for) до того как будешь уверен что все попытки оптимизировать DOM приняты. На мой взгляд оптимизация скорости работы с массивами и switch-case, try-catch - экономия на спичках.
Всегда используй цифры (console.time, console.timeEnd а так же flamechart в средствах разработчика хрома) чтобы ориентироваться на сколько в абсолютных значениях твое изменение повлияло на производительность, не оптимизируй код “вслепую”. Не раз имел опыт когда “слепая” оптимизация только усугубляла ситуацию, а автор не мог этого опознать только потому что не пользовался замерами.