Какой лучший способ написать JavaScript для цикла?
- Как это обычно написано
- Исправить интервал
- Локализуйте свою переменную
- Не используйте оператор приращения
- Не рассчитывайте длину на каждой итерации
- Вместо этого уменьшите значение
- Последние мысли
При кодировании JavaScript я часто использую цикл for. Недавно, когда я закодировал, то перекодировал эти выпадающие меню во время перекодирования я запускал свой JavaScript / jQuery через JSLint используя опцию под названием «Хорошие части».
Я не очень много знаю о JSLint, но я подумал, что это был бы довольно хороший способ убедиться, что код эффективен, относительно перспективен и прост в обслуживании (то есть использует лучшие практики).
Предоставленная JSLint информация, а также другие материалы, которые я читал в прошлом, заставили меня задуматься о простом цикле JavaScript for и о том, как он обычно пишется.
Как это обычно написано
Я думаю, можно с уверенностью сказать, что большинство начинающих и промежуточных разработчиков JavaScript будут писать свои циклы for следующим образом:
var anchors = document.getElementsByTagName ("a"); for (i = 0; i <anchors.length; i ++) {// кое-что сделать здесь}
Я добавил дополнительную строку, чтобы собрать некоторые элементы DOM для итерации, но цикл - это то, на чем мы сосредоточены. Хотя этот код будет отлично работать, как его можно улучшить? Что ж, JSLint, а также лучшие практики для высокопроизводительного JavaScript помогут нам сделать небольшие, но важные улучшения.
Исправить интервал
Этот небольшой пример кода генерирует 11 сообщений об ошибках в JSLint, используя опцию «Хорошие части». Одна из вещей, на которые JSLint будет часто указывать, это отсутствие расстояния между вашими операторами. Итак, давайте исправим интервал. Вот как выглядит наш код после исправления всех пробелов:
var anchors = document.getElementsByTagName ("a"); for (i = 0; i <anchors.length; i ++) {// кое-что сделать здесь}
Технически, мне не нужно было ставить пробел после точки с запятой, но я все равно сделал это, чтобы улучшить читаемость. В дополнение к правильному интервалу между операторами, JSLint также требует пробела между закрывающей скобкой и открывающей фигурной скобкой. Все эти пробелы, насколько я понимаю, помогают избежать использования запутанного кода, который подвержен случайным ошибкам, или кода, в котором ошибки трудно обнаружить.
Локализуйте свою переменную
После исправления пробелов мы можем сосредоточиться на другой ошибке, представленной JSLint: глобальной переменной i. Любая переменная, не определенная с помощью оператора var в JavaScript, имеет глобальный характер. Это плохая практика, и ее можно легко пропустить внутри такого часто используемого фрагмента кода. Итак, давайте сделаем нашу переменную локальной, используя ключевое слово var. Мы могли бы сделать это несколькими способами, но для удовлетворения JSLint будет достаточно следующего метода:
var anchors = document.getElementsByTagName ("a"); for (var i = 0; i <anchors.length; i ++) {// кое-что сделать здесь}
Теперь JSlint дает нам только одну оставшуюся ошибку. (Технически этот код выдаст две другие ошибки: глобальный документ и пустой блок, но в этом иллюстративном примере это не имеет большого значения).
Не используйте оператор приращения
Это то, что я с удивлением увидел. Я еще не читал Книга Крокфорда так что я не знаю, есть ли что-то еще, кроме того, что объясняется на Страница инструкций JSLint , но вот что он говорит об операторе приращения (++):
Операторы ++ (увеличение) и - (уменьшение), как известно, вносят свой вклад в плохой код, поощряя чрезмерную хитрость. Они уступают только неисправной архитектуре в плане защиты от вирусов и других угроз безопасности.
Я предполагаю, что использование оператора приращения в безвредном цикле for не станет для вас большой проблемой. Но кто я такой, чтобы сомневаться? Так какова альтернатива? Что ж, оператор приращения - это просто способ сказать «добавь 1 к моей переменной», так что давайте сделаем JSLint счастливым, сделав так:
var anchors = document.getElementsByTagName ("a"); for (var i = 0; i <anchors.length; i + = 1) {// делать кое-что здесь}
Я действительно не знаю, является ли это лучшим и / или единственным способом сделать это, или это вообще необходимо в цикле for, но это дает нам тот же результат, и JSLint это нравится.
Теперь в этом, казалось бы, безвредном фрагменте кода нет существенных ошибок. Но есть еще два улучшения, о которых JSLint нас не предупреждает.
Не рассчитывайте длину на каждой итерации
Поскольку код теперь, длина якорей рассчитывается на каждой итерации цикла. В больших приложениях с большими значениями и несколькими циклами это может привести к проблемам с производительностью. Поэтому, хотя во многих небольших случаях это может не иметь значения, лучше всего попытаться кэшировать значения перед их использованием. Таким образом, мы можем изменить код так:
var anchors = document.getElementsByTagName ("a"); for (var i = 0, j = anchors.length; i <j; i + = 1) {// делать кое-что здесь}
Теперь значение вычисляется только один раз и сохраняется в переменной j. Я, конечно, должен поблагодарить комментаторов в некоторых из моих предыдущих статей о JavaScript за то, что они указали на это улучшение в моих циклах.
Вместо этого уменьшите значение
Предполагая, что вас не волнует порядок, в котором собранные элементы циклически повторяются, вы, очевидно, можете улучшить производительность ваших петель уменьшая значение, а не увеличивая его. Вот как будет выглядеть новый код:
var anchors = document.getElementsByTagName ("a"); for (var i = anchors.length - 1; i> = 0; i - = 1) {// делать кое-что здесь}
Теперь различные части инструкций цикла были обращены вспять, и мы даже исключили использование второй переменной, так как мы знаем, что мы просто понижаемся до 0. Конечно, у вас может быть случай, когда уменьшение вашего цикла будет не работает, так что это просто что-то, чтобы рассмотреть, если ситуация учитывает это. Также обратите внимание, что я вычитаю единицу из начального значения и позволяю циклу опуститься до нуля, чтобы учесть индексацию на основе нуля.
Последние мысли
Вот и все, есть пять практических улучшений, внесенных в простой цикл for, и, что более важно, некоторые основополагающие принципы, которые могут помочь вам писать более чистый и эффективный код в большем масштабе.
Кроме того, не так много примеров в сети или иным образом, которые представляли бы цикл for с использованием советов, описанных выше, но я думаю, что было бы хорошо, если бы большинство разработчиков приняли эти методы, если они действительно способствуют повышению производительности, читабельности, и ремонтопригодность.
Я должен отметить - как я часто это делаю, когда пишу о JavaScript - что я не считаю себя экспертом в этой области, поэтому, если у вас есть какие-либо исправления или дополнительная информация, чтобы внести вклад в эту тему, пожалуйста, сделайте это в комментариях. И во что бы то ни стало, сделайте необходимые исследования, прежде чем принять мое слово как золото. Я все еще учусь, и я счастлив исправить любые ошибочные взгляды.
Похожие
Ваш первый интернет-магазин. Как начать?... нет"> Вы все еще думаете о продаже через Интернет? Выполните пять шагов ниже и откройте интернет-магазин быстрее, чем вы думаете. Невероятно динамичное развитие, которое индустрия электронной коммерции испытывает в течение нескольких лет, является недостаточной возможностью стать предпринимателем и источником дохода от онлайн-трейдинга. По оценкам, в мире насчитывается почти 3 миллиарда пользователей Интернета (по данным Международного союза электросвязи за 2013 Снимите код блокировки, перепрошив устройство в NOKIA E75
Если вы забыли пароль безопасности (также известный как код блокировки) для вашего NOKIA E75, и нет другого способа выполнить полный сброс, попробуйте загрузить новую прошивку, выполнив операцию прошивки на своем мобильном телефоне. Таким образом, вы восстановите пароль по умолчанию, но также потеряете все данные на вашем устройстве и вернете все настройки к заводскому состоянию. В следующем уроке мы шаг за шагом представим, как выполнить такую операцию. Пожалуйста, помните о последствиях Как обновить DirectX
Вы установили новую игру на свой компьютер, но не можете ее запустить, потому что появляется ошибка относительно библиотек DirectX? После того как вы обновили Windows, ваш компьютер больше не распознает библиотеки DirectX? Не отчаивайтесь, я здесь, чтобы помочь вам сегодня. Библиотеки DirectX, которые включены во все версии Windows, позволяют в полной мере использовать аппаратное ускорение видеокарт: они оптимизируют выполнение 3D-игр, видео высокой четкости и другого «тяжелого» мультимедийного Тестирование компонентов ReactJS с помощью Karma и Webpack
... научит вас, как настроить Karma для тестирования компонентов ReactJS. Первоначально он был размещен на Codementor Джастин Ву «s блог , Бесполезный фон Около 8 месяцев назад я начал искать решения для тестирования компонентов React, но у меня не было хороших идей. Сначала я попробовал QUnit, который, кажется, работал нормально, но я хотел, чтобы он запускался f.lux против Windows 10 Night Light: какой из них использовать?
Реклама Вы используете свой компьютер в конце дня? Вам трудно идти спать или страдать от усталости глаз? Если так, Вы можете извлечь выгоду из изменения цветовой температуры вашего экрана Могут ли F.lux и Night Shift улучшить ваши привычки во сне? Как создать красивую видео галерею в своем блоге с TubePress
... невной серии плагинов WordPress для 30 убийц. Ну, мы достигли конца этой серии. Сегодня мы завершим это. Видео является довольно фундаментальным форматом контента в наши дни. Чтобы получить максимальную отдачу от вашего интернет-маркетинга, вам определенно следует использовать видео. И если вы полагаетесь только на письменные сообщения, вы полностью бросаете мяч. Когда дело доходит до создания видео, самый простой и лучший вариант - это Youtube. Удивительное дополнение для слайдшоу изображений CS-Cart
Используйте это где угодно! Страница сведений о продукте Блок баннеров Новейший блок Блок последних продуктов Самый популярный блок Блок бестселлеров В продаже блок Рейтинговый блок Вручную заблокировать Ручная установка в другом месте Особенности, которые вы полюбите ... отзывчивый Быстрая загрузка SEO дружественный Как отключить рекламу с помощью Kaspersky Internet Security
Интернет по уши в рекламе. Они могут перегружать страницы и мешать сосредоточиться на контенте. Недавно мы объяснили, как работают эти интернет-объявления, и сегодня мы расскажем, как попрощаться с этими объявлениями с помощью Kaspersky Internet Security 2017. Включить анти-баннер Как скачать музыку с YouTube
... на услуги потоковой передачи музыки, такие как Гугл игры Музыка или же Spotify как слушать и открывать новые треки на YouTube"> Многие люди, которые не подписаны на услуги потоковой передачи музыки, такие как Гугл игры Музыка или же Spotify как слушать и открывать новые треки Как освободить место на вашем Android устройстве
Реклама Размеры приложений, фотографий и операционных систем становятся все больше. Одно приложение Facebook теперь занимает колоссальные 250 МБ. Если вы также используете Pages Manager и Messenger, вам потребуется более половины гигабайта дискового пространства. Игры, видео, изображения и резервные копии также будут поглощать вашу память. Если вы используете более старое устройство или даже модель начального уровня более нового устройства, вы быстро столкнетесь с ограничениями В мире стало больше и богатых, и бедных. Что-то не то ...
... нения организаций, которые борются с бедностью - совпала с началом Всемирного экономического форума в швейцарском Давосе (конференция, в которой принимают участие политические и деловые лидеры мира. - Ред). В документе говорится, что 82% всех богатств мира принадлежат 1% населения Земли, и расслоение общества с каждым годом только растет. По данным Oxfam, новый миллиардер появлялся в среднем каждые два дня. Если в 2000 году их было 322, в 2016-м - 1810, то в 2017-м - 2043. 233
Комментарии
Хотя это редко встречается для хорошо разработанного и написанного приложения, взаимные блокировки могут быть серьезной проблемой для - как я могу сказать это деликатно?Хотя это редко встречается для хорошо разработанного и написанного приложения, взаимные блокировки могут быть серьезной проблемой для - как я могу сказать это деликатно? - «менее эффективного» кода приложения. Что еще более расстраивает, так это то, что администратор базы данных не может многое сделать для предотвращения взаимоблокировок, поскольку бремя предотвращения их в первую очередь ложится на разработчиков приложений. После того, как приложение разработано и написано, администратору баз Как мы можем улучшить это?
Как мы можем улучшить это? Дайте нам знать Мы всегда совершенствуем наши инструменты, основываясь на отзывах клиентов. Удаление CS-Cart 4 Перейдите в Панель администратора> Надстройки> Управление надстройками. Перейдите в Magic Slideshow> нажмите значок «Настройки»> выберите «Удалить»> нажмите «ОК». Волшебное Слайд-шоу теперь удалено. Удаление CS-Cart 2 & Как это улучшение?
Как это улучшение? Поскольку HTML5 находится внутри самой структуры браузера, он может полагаться на кэш браузера для загрузки уже посещенных баннеров и другого контента вместо того, чтобы загружать его отдельно каждый раз. Это одно гигантское улучшение по сравнению с Flash. Кроме того, HTML5 позволяет распределять нагрузку между различными библиотеками данных, которые не являются частью исходной загрузки. Какие были проблемы с безопасностью Flash? Там действительно Значит ли это, что вы должны полностью отказаться от использования сети?
Значит ли это, что вы должны полностью отказаться от использования сети? Как безопасно осуществлять онлайн-переводы? переводы у них есть ряд преимуществ перед интернетом. Прежде всего, это экономит много времени - нам не нужно заполнять около десятка или около того отпечатков для перевода, а затем стоять в очереди на почте или в окне банка. Переводы Как это работает на практике?
Как это работает на практике? Что отличает Pixel на фоне Nexuses и других смартфонов? Первая отличительная черта - и в то же время, с нашей точки зрения, большой недостаток Как обычно происходит мошенничество с подарочными картами?
Как обычно происходит мошенничество с подарочными картами? Существует три основных категории мошенничества: Взлом аккаунтов Как описано ранее с История Starbucks Воры могут взломать подарочные карты и быстро слить им деньги. Если функция автоматической загрузки включена, в течение нескольких секунд киберпреступник может быстро накапливать платежи Хорошо, как я могу получить это?
Хорошо, как я могу получить это? Монтаж Зависимости, которые вам, вероятно, понадобятся: карма - настоящий бегун карма-кли - кли для кармы карма-мокко - для использования каркаса теста мокко с кармой karma-webpack - для использования webpack для фактической предварительной обработки кармы karma-sourcemap-loader - для загрузки исходных карт в карму karma-chrome-launcher - для запуска хрома ожидайте Почему и когда это происходит?
Почему и когда это происходит? Каждый из редакторов Джуниора описывает бешенство детей, основываясь на собственном семейном опыте. Существуют некоторые закономерности, которые наверняка будут обнаружены каждой семьей, если взглянуть на ситуации, в которых драки «без причины» происходят чаще всего. Откуда этот внезапный гнев? Войцех Musiał: Наши дети являются живым примером правдивости высказывания «Как поляк голоден, Какой самый лучший плагин cookie для GDPR для WordPress?
Какой самый лучший плагин cookie для GDPR для WordPress? Для WordPress существует широкий спектр плагинов cookie для GDPR, как бесплатных, так и платных. Их функциональность и качество варьируются соответственно. Когда вы выбираете плагин cookie для своего веб-сайта, вам нужно искать, соответствует ли он фактическим требованиям GDPR . NB! Имейте в виду, что правила изменились. Ранее веб-сайты, работающие на территории ЕС или граждане ЕС Как вы не позволяете вашему устройству выйти за пределы памяти?
Как вы не позволяете вашему устройству выйти за пределы памяти? Вы можете связаться со своими идеями, советами и решениями в разделе комментариев ниже. Первоначально написано Эрез Цукерман 12 июля 2012 года. Узнайте больше о: Облачное хранилище , Место хранения , Какие правила вы должны будете дать ему, чтобы немного напрячь свою историю?
Какие правила вы должны будете дать ему, чтобы немного напрячь свою историю? Как работает общество? Откуда берется еда? Вам нужно знать, как работает ваш мир. […] Г.К. Честертон подытожил фантазию как искусство воспринимать то, что является смешным и повседневным (и, следовательно, невидимым), поднимать его и показывать нам с незнакомого направления, чтобы мы могли видеть его заново, свежими глазами… жанр предлагает все палитры других жанров, а также новые цвета. Их следует использовать
Хотя этот код будет отлично работать, как его можно улучшить?
Но кто я такой, чтобы сомневаться?
Так какова альтернатива?
Как начать?
Нет"> Вы все еще думаете о продаже через Интернет?
После того как вы обновили Windows, ваш компьютер больше не распознает библиотеки DirectX?
Lux против Windows 10 Night Light: какой из них использовать?
Реклама Вы используете свой компьютер в конце дня?
Вам трудно идти спать или страдать от усталости глаз?
Lux и Night Shift улучшить ваши привычки во сне?