В недавнем посте я упомянул, что мне было трудно понять идею передачи функции, которая принимает аргументы в качестве аргумента внутри функции. На данный момент я не совсем понимаю, почему это казалось мне таким трудным; однако дело в том, что я все смотрел на функции и просто путался в них. Этот программист-новичок застрял, и ему нужно было выпутаться.

Если вы находитесь в похожей ситуации, возможно, вам поможет что-то похожее на то, что я описал ниже!

Распространение:

Мое первое знакомство с функциями JS произошло через веб-сайт Академии Хана. Я прорабатывал их модуль Intro to JS: Drawing and Animation и мог выполнять задания с функциями, но все еще не очень понимал, что делаю. Я просто следовал шаблону их примера и реализовывал на его основе. У кого-нибудь из вас есть такой же опыт? Я мог соединить точки, но не мог создать свою картину с нуля. Но я просто решил, что мне нужно больше практики, поэтому я продолжал работать с Академией Хана, пока не обнаружил бесплатный модуль Introduction to JavaScript на Codecademy. Стремясь к большей практике, я начал с самого начала и проработал 1. Введение à2. Поток управления à3. Функции à4. Область видимости 5. Массивы 6. петли а7. Итераторы à8. Objects à и работал над классами, когда пришло время начать курс веб-разработчика, на который я подписался в Bloc.io.

Теперь обратите внимание, как рано в этой последовательности появились Функции. Я также читал о функциях в MDN, W3 Schools просматривал статьи о функциях в Stack Overflow и проводил дополнительные исследования в других местах в Google. Тем не менее, у меня все еще были проблемы с функциями. Может быть, мне просто нужно было больше практики, верно?

Затем я начал работать над модулем Web Developer Track Frontend & Programming Fundamentals на bloc.io и в конце концов обнаружил то же самое. Я все еще мог соединить точки, подражая тому, что было дано для получения результата, но я не мог нарисовать свою собственную картину. Я был расстроен и определенно сомневался в себе. Я начал искать дополнительные ресурсы (гугл), но потом я вспомнил времена, когда застрял в приобретении других вещей (будь то разговорные языки или кунг-фу), и понял, что у меня есть все, что мне нужно. Объяснение функций Bloc было наиболее систематическим и полным объяснением, которое я когда-либо видел (это, как правило, верно для многих их контрольных точек JS), и я уже просмотрел большое количество ресурсов. Опять же, я приобрел все, что мне нужно. Теперь мне нужно было изменить то, как я его использовал.

Углубление:

Когда я дошел до этого момента, я мог рассказать вам, для чего предназначена каждая часть объявления функции, но по какой-то причине я все еще чувствовал неуверенность в отношении параметров/аргументов (в функции ниже аргументом является «имя»), и я все еще запутался, когда увидел альтернативные формы функции, потому что JS позволяет писать функции в разных форматах. Например, следующие четыре функции фактически являются одним и тем же (во всяком случае, для целей данного объяснения).

Затем, если вы добавили переменную или другую функцию в качестве аргумента/параметра, мне просто нужно было немного посмотреть на функцию и притвориться, что я понял. Например:

В середине марта 2018 года я разобрался с отдельными частями функции. Я понял общую предпосылку функции. Я не понял всех взаимосвязей внутри функции (и давайте не будем говорить о области видимости и подъеме в этом посте).

Так что же я сделал? Я сел с 4 ручками разных цветов и снова начал читать объяснения Блока о функциях. Во-первых, я написал очень простое объявление функции, указав, что потребуется для вызова функции и ожидаемый результат. Важные части функции были написаны разными цветами — как в инструментах кодирования, я сделал снимок экрана выше — и я убедился, что понял каждую часть этого объявления.

Далее я перешел к функции с двумя параметрами/аргументами. Затем я перешел к функциональным выражениям, пишу цветными ручками таким образом, чтобы мне было проще следить за тем, что делает каждая часть функции. Например, в примерах функций 1, 2 и 3 выше слово «функция» написано синим цветом, потому что это термин, который сигнализирует о наличии функции. Я сделал то же самое. Однако в четвертом примере слово функция не используется. Вместо этого «=›» синего цвета, потому что это идентифицирующий фактор, сигнализирующий о наличии функции. И если вы думаете, что я просто скопировал редактор кода, я этого не делал. Это разрушило бы цель упражнения! Я сам назначал цвета, исходя из собственного понимания кода. Таким образом, я понимал отношения внутри каждой отдельной функции, но я также понимал, как различные формы функций соответствуют друг другу.

К концу примерно двух часов работы над уроком и многочисленных страниц с тщательно проиллюстрированными схемами и помеченными функциями я, наконец, смог сказать, что чувствую себя комфортно в этой теме. Да, я все еще был немного брезглив с callback-функциями (о них было мало объяснений), а позже, когда я столкнулся с рекурсивными функциями, мне снова пришлось замедлиться, но у меня были все строительные блоки, чтобы все понять. еще бросили на меня.

Если вы застряли, будь то с чем-то на раннем этапе процесса, например с функциями, или с чем-то позже, да, сначала прочитайте широко и познакомьтесь с рядом стилей презентации. Кроме того, почувствуйте, что вы делаете, имитируя и модифицируя некоторые примеры, которые вы рассматриваете. Все программисты так учились. И кто знает, может быть, это все, что вам нужно! Но если это не так, вытащите свои цветные ручки (или что вы предпочитаете) и копайте! Помните, что любой программист должен решать проблемы и головоломки! Это просто еще одна проблема, которую нужно решить. Дать ему шанс!