Как изучить javascript в 2021
Содержание:
Спецификации
Спецификация – это самый главный, определяющий документ, в котором написано, как себя ведёт JavaScript, браузер, CSS и т.п.
Если что-то непонятно, и справочник не даёт ответ, то спецификация, как правило, раскрывает тему гораздо глубже и позволяет расставить точки над i.
Спецификация (формальное описание синтаксиса, базовых объектов и алгоритмов) языка JavaScript называется ECMAScript.
Почему не просто «JavaScript» ?
Вы можете спросить: «Почему спецификация для JavaScript не называется просто «JavaScript», зачем существует какое-то отдельное название?»
Всё потому, что JavaScript – зарегистрированная торговая марка, принадлежащая корпорации Oracle.
Название «ECMAScript» было выбрано, чтобы сохранить спецификацию независимой от владельцев торговой марки.
Спецификация может рассказать многое о том, как работает язык, и она является самым фундаментальным, доверенным источником информации.
JavaScript – язык общего назначения, поэтому в спецификации ECMAScript нет ни слова о браузерах.
Главная организация, которая занимается HTML, CSS, XML и множеством других стандартов – Консорциум Всемирной паутины (World Wide Web Consortium, сокращённо W3C).
Информацию о них можно найти на сайте w3.org. К сожалению, найти в этой куче то, что нужно, может быть нелегко, особенно когда неизвестно в каком именно стандарте искать. Самый лучший способ – попросить Google с указанием сайта.
Например, для поиска набрать document.cookie site:w3.org.
Последние версии стандартов расположены на домене dev.w3.org.
Кроме того, в том, что касается HTML5 и DOM/CSS, W3C активно использует наработки другой организации – WhatWG. Поэтому самые актуальные версии спецификаций по этим темам обычно находятся на https://whatwg.org/specs/.
Иногда бывает так, что информация на сайте http://dev.w3.org отличается от http://whatwg.org. В этом случае, как правило, следует руководствоваться http://whatwg.org.
FAQ
А это все правда? Действительно ли курсы такие хорошие?
Вам решать.
Здесь нет курсов по HTML/CSS/PHP/Photoshop и прочему разному.
Я провожу курсы только по JavaScript. И стараюсь делать это настолько хорошо, насколько это возможно. Посмотрите эту страницу, внимательно остановитесь на программе и способе обучения, подумайте, подходит ли это вам.
Какие есть способы оплаты? Можно ли от организации?
Все основные способы предусмотрены. Есть оплата через банк, Webmoney, банковской карточкой.
Можно участвовать от компании и оплачивать через счет, в этом случае документы будут на странице заказа. Подписанные документы могут быть присланы в виде сканов или по почте.
Выбор способа оплаты — в процессе оформления.
А можно ваши курсы скачать?
Мы встречаемся онлайн, регулярно, потому что такие встречи дают вам возможность обсудить, что получается, с опытным разработчиком, задать вопросы, улучшить свои навыки и код.
Никакое «скачать» этого не заменит. Это просто не то, чем я здесь занимаюсь.
Что, если будут те, кто просто не будет успевать за программой — будет ли наш караван идти со скоростью самого медленного верблюда или отставших будем бросать на произвол судьбы так сказать?…
У нас есть программа, она построена на том уровне, который, на мой взгляд, необходим. Практика показывает, что «верблюды», в принципе, хорошие и идут правильно. Если менее политкорректно — дураков в группе нет, все участники адекватные.
Кривая обучения растёт постепенно, сначала медленнее, потом быстрее, так что если полноценно участвовать, то всё у всех получается.
Если же кто-то не успевает и пишет мне об этом, то я без проблем организую дополнительное занятие по сложной теме. Получается что отстающих не бросаем и группу не тормозим. В крайнем случае можно перевестись в другую группу, если какой-то форс-мажор.
Спасибо за письмо об открытии записи, а будут ли места через неделю?
Этот вопрос в различных вариациях я получаю уже после того, как отослал уведомление о записи.
Здесь всё просто — наличие мест от меня не зависит. Бывает очень по-разному
Бывает и постепенное заполнение за неделю-две, а бывает и какая-нибудь компания сразу пол-группы своими сотрудниками займёт.
Тем не менее, практика показывает, что в течение первых 3-5 дней после открытия записи места обычно есть (обычно! зависит не от меня!).
Планируются ли дополнительно курсы по …? Когда?
Важно понимать — это действительно большой и серьёзный курс. То есть, после его окончания, если вы полноценно участвовали, вам не нужно тут же идти на какую-то «2-ю ступень».
Курсы, о которых действительно может быть вопрос — это конкретные фреймворки и технологии.
Сейчас проводится курс по современному Node.JS
Бывают курсы и по другим технологиям, но редко. Уведомления об этом идут в рассылку с конкретной программой, которая меняется от курса к курсу.
Изучаем программирование на JavaScript
Эрик Фримен, Элизабет Робсон

«Изучаем программирование на JavaScript»
Если вы начинаете путь в разработке, и пока для вас программирование больше похоже на магию — присмотритесь к этой книге. Она познакомит вас с одним из самых популярных языков программирования — JavaScript. Основная её особенность — повествование в стиле комиксов. Обучение строится через иллюстрации и многочисленные рассуждения в виде прямой речи героев.
Основной упор авторы делают на подачу материала. Они не просто описывают возможности языка, как это принято в традиционных книгах, а наталкивают читателя на проблемы и их решения. Несмотря на большой объём, книга читается на одном дыхании. Вы разберётесь с основами языка, напишете несколько простых приложений и подготовитесь к чтению более серьёзной литературы.
Бесплатные занятия по JavaScript
Финансовый вопрос для множества начинающих программистов имеет первостепенное значение. Это вполне логично. Интернет изначально создавался как база знаний, в которой каждый может найти интересующую информацию. «С чего это вдруг я должен платить?», — вполне естественный вопрос.
К сожалению, ответ на него тоже незатейливый – качество. Слишком мало у нас в стране талантливых и бескорыстных людей, готовых предоставить свое время бесплатно, но не стоит расстраиваться.
К счастью, существуют всякие акции, бонусы и курсы, созданные для повышения PR разработчиков. Малоизвестные школы создают материалы, но первое время, ради отзывов и рецензий, готовы предоставлять их бесплатно. Нужно только попасть в нужное место и найти лучшее для этого время. Мне удалось отыскать неплохой вариант, которым я с удовольствием с вами сейчас поделюсь.
Если вы ничего не смыслите в JS (это всемирное сокращение JavaScript), могу предложить подборку видео с YouTube. Это вводный курс для обучения с нуля, созданный онлайн школой Хакслет.
Вы также можете получить курс «Основы программирования» с заданиями на официальном сайте компании. В 17 часов на обучение входят 27 уроков и 21 практическое упражнение.
После того, как основы будут изучены, можно перейти к следующему шагу «JS: подготовка к работе». Доступ также предоставляется бесплатно.
Естественно, сам я этот курс не проходил, а потому не могу гарантировать вам качество и рассказать про какие-то особенности обучения. Хакслет появился сравнительно недавно и позиционирует себя как международная команда специалистов, занятых обучением людей с нуля до профессионального уровня.

Англоязычные тексты, курсы, отсылки к знакомым ресурсами типа Лайфхакер и Хабра внушают доверие. Однако, основным преимуществом, на мой взгляд, пока является бесплатность.
Возможно, чуть позже компании удастся проявить себя, доказать свою значимость в этом мире, показать уровень выпускаемые специалистов и добиться славы, успеха и тому подобного.
Без стеснения пишу о плохих сервисах и программах, о чем не так давно рассказывал в своем блоге, но данный проект плохим называть рано. Репутация его кристально чиста, и хоть пока удивить кого-то сертификатом о прохождении обучения из Хакслета не удастся, для кого-то важны знания, а потому и этот вариант нельзя оставлять без внимания.
JS Уроки
JS HOMEJS IntroductionJS Where ToJS OutputJS StatementsJS SyntaxJS CommentsJS VariablesJS OperatorsJS ArithmeticJS AssignmentJS Data TypesJS FunctionsJS ObjectsJS ScopeJS EventsJS StringsJS String MethodsJS NumbersJS Number MethodsJS ArraysJS Array MethodsJS Array SortJS Array IterationJS DatesJS Date FormatsJS Date Get MethodsJS Date Set MethodsJS MathJS RandomJS BooleansJS ComparisonsJS ConditionsJS SwitchJS Loop ForJS Loop WhileJS BreakJS Type ConversionJS BitwiseJS RegExpJS ErrorsJS DebuggingJS HoistingJS Strict ModeJS this KeywordJS Style GuideJS Best PracticesJS MistakesJS PerformanceJS Reserved WordsJS VersionsJS Version ES5JS Version ES6JS JSON
Подключение в любом месте
Когда браузер читает HTML-страничку, и видит — он первым делом читает и выполняет код, а только потом продолжает читать страницу дальше.
Так, в следующем примере будет показано начало страницы, затем три раза выполнится функция alert, которая выводит окошко с информацией, а только потом появится остальная часть страницы.
<html>
<body>
<h1>Считаем кроликов</h1>
*!*
<script type="text/javascript">
for(var i=1; i<=3; i++) {
alert("Из шляпы достали "+i+" кролика!")
}
</script>
*/!*
<h1>...Посчитали</h1>
</body>
</html>
В этом примере использовались следующие элементы.
- <script type=»text/javascript»> … </script>
- Тег сообщает браузеру о том, что внутри находится исполняемый скрипт. Атрибут говорит о том, что это javascript. Вообще говоря, атрибут может отсутствовать — разницы нет, но с точки зрения стандарта его следует указать.
- Конструкция for
- Обычный цикл, по синтаксису аналогичный другим языкам программирования.
- Объявление var i
- Объявление переменной внутри цикла: — локальная переменная.
- Функция alert
- Выводит сообщение на экран и ждет, пока посетитель не нажмет ОК
Неточные вычисления
Внутри JavaScript число представлено в виде 64-битного формата IEEE-754. Для хранения числа используется 64 бита: 52 из них используется для хранения цифр, 11 из них для хранения положения десятичной точки (если число целое, то хранится 0), и один бит отведён на хранение знака.
Если число слишком большое, оно переполнит 64-битное хранилище, JavaScript вернёт бесконечность:
Наиболее часто встречающаяся ошибка при работе с числами в JavaScript – это потеря точности.
Посмотрите на это (неверное!) сравнение:
Да-да, сумма и не равна .
Странно! Что тогда, если не ?
Но почему это происходит?
Число хранится в памяти в бинарной форме, как последовательность бит – единиц и нулей. Но дроби, такие как , , которые выглядят довольно просто в десятичной системе счисления, на самом деле являются бесконечной дробью в двоичной форме.
Другими словами, что такое ? Это единица делённая на десять — , одна десятая. В десятичной системе счисления такие числа легко представимы, по сравнению с одной третьей: , которая становится бесконечной дробью .
Деление на гарантированно хорошо работает в десятичной системе, но деление на – нет. По той же причине и в двоичной системе счисления, деление на обязательно сработает, а становится бесконечной дробью.
В JavaScript нет возможности для хранения точных значений 0.1 или 0.2, используя двоичную систему, точно также, как нет возможности хранить одну третью в десятичной системе счисления.
Числовой формат IEEE-754 решает эту проблему путём округления до ближайшего возможного числа. Правила округления обычно не позволяют нам увидеть эту «крошечную потерю точности», но она существует.
Пример:
И когда мы суммируем 2 числа, их «неточности» тоже суммируются.
Вот почему – это не совсем .
Не только в JavaScript
Справедливости ради заметим, что ошибка в точности вычислений для чисел с плавающей точкой сохраняется в любом другом языке, где используется формат IEEE 754, включая PHP, Java, C, Perl, Ruby.
Можно ли обойти проблему? Конечно, наиболее надёжный способ — это округлить результат используя метод toFixed(n):
Также можно временно умножить число на 100 (или на большее), чтобы привести его к целому, выполнить математические действия, а после разделить обратно. Суммируя целые числа, мы уменьшаем погрешность, но она все равно появляется при финальном делении:
Таким образом, метод умножения/деления уменьшает погрешность, но полностью её не решает.
Забавный пример
Попробуйте выполнить его:
Причина та же – потеря точности. Из 64 бит, отведённых на число, сами цифры числа занимают до 52 бит, остальные 11 бит хранят позицию десятичной точки и один бит – знак. Так что если 52 бит не хватает на цифры, то при записи пропадут младшие разряды.
Интерпретатор не выдаст ошибку, но в результате получится «не совсем то число», что мы и видим в примере выше. Как говорится: «как смог, так записал».
Два нуля
Другим забавным следствием внутреннего представления чисел является наличие двух нулей: и .
Все потому, что знак представлен отдельным битом, так что, любое число может быть положительным и отрицательным, включая нуль.
В большинстве случаев это поведение незаметно, так как операторы в JavaScript воспринимают их одинаковыми.
Что такое JavaScript?
Изначально JavaScript был создан, чтобы «сделать веб-страницы живыми».
Программы на этом языке называются скриптами. Они могут встраиваться в HTML и выполняться автоматически при загрузке веб-страницы.
Скрипты распространяются и выполняются, как простой текст. Им не нужна специальная подготовка или компиляция для запуска.
Это отличает JavaScript от другого языка – Java.
Почему JavaScript?
Когда JavaScript создавался, у него было другое имя – «LiveScript». Однако, язык Java был очень популярен в то время, и было решено, что позиционирование JavaScript как «младшего брата» Java будет полезно.
Со временем JavaScript стал полностью независимым языком со своей собственной спецификацией, называющейся ECMAScript, и сейчас не имеет никакого отношения к Java.
Сегодня JavaScript может выполняться не только в браузере, но и на сервере или на любом другом устройстве, которое имеет специальную программу, называющуюся «движком» JavaScript.
У браузера есть собственный движок, который иногда называют «виртуальная машина JavaScript».
Разные движки имеют разные «кодовые имена». Например:
- V8 – в Chrome и Opera.
- SpiderMonkey – в Firefox.
- …Ещё есть «Trident» и «Chakra» для разных версий IE, «ChakraCore» для Microsoft Edge, «Nitro» и «SquirrelFish» для Safari и т.д.
Эти названия полезно знать, так как они часто используются в статьях для разработчиков. Мы тоже будем их использовать. Например, если «функциональность X поддерживается V8», тогда «Х», скорее всего, работает в Chrome и Opera.
Как работают движки?
Движки сложны. Но основы понять легко.
- Движок (встроенный, если это браузер) читает («парсит») текст скрипта.
- Затем он преобразует («компилирует») скрипт в машинный язык.
- После этого машинный код запускается и работает достаточно быстро.
Движок применяет оптимизации на каждом этапе. Он даже просматривает скомпилированный скрипт во время его работы, анализируя проходящие через него данные, и применяет оптимизации к машинному коду, полагаясь на полученные знания. В результате скрипты работают очень быстро.
Выразительный JavaScript. Марейн Хавербеке
В процессе чтения книги программист знакомится с синтаксисом языка и учится писать эффективный код. Автор предлагает множество упражнений и примеров, исходя из своего опыта, чтобы читатель смог быстрее вникнуть в тему и закрепить полученные знания. Вторая часть издания посвящена типовым ошибкам, которая возникает в процессе работы и их устранению.
Преимущества:
- рассматриваются почти все аспекты JS;
- информация описана четко и по делу;
- много упражнений и примеров.
Недостатки:
- читать ее следует тем, кто имеет определенную базу знаний Java;
- мягкая обложка;
- в изложении чувствуется пренебрежение автора к языку JavaScript.
Школы JavaScript
Школа дает полноценные знания, понимание предмета, да и нахождение ученика в некоторых заведениях делает работу ценнее, а ему самому добавляет 100 очков к престижу. Вот о таких «элитных» местах мы сейчас и поговорим.
Существует два института, которые в российском интернете считаются чуть ли не Гарвардами. Один называется «Нетология». Среди учителей именитые дизайнеры, программисты, главы крупных корпораций и так далее. Информация по JS входит в курс «Профессия frontend-разработчик».

Время обучения занимает около полугода и после этого вы начинаете владеть всеми знаниями, которые необходимы для работы, а также сертификатом о прохождении курса. Естественно, это в него входит не только яваскрипт, но и другие языки программирования.
Правда и обучение не из дешевых – около 40 000 рублей.
Слишком дорого? Тогда рекомендую обратить внимание на альтернативный вариант –. Времени этот курс отнимет чуть больше 11 месяцев (в него входит еще и 2 месяца стажировки)
Учтите, что не так давно часть этой школы выкупила компания Mail.ru, владеющая Одноклассниками, Вконтакте и другими лакомыми сервисами. Кто знает, может вас тоже направят стажироваться в какую-то именитую фирму. Узнайте об этом чуть больше, в статье про трудоустройство от Mail.

Если нет желания тратить время и изучать так много, можете «выкупить» только ту информацию, что касается JS: «JavaScript. Уровень один» и «JavaScript. Уровень два». Правда, думаю, что в этом случае о стажировке придется забыть. Эту информацию следует уточнить у разработчиков.
Вот в принципе и все. Желаю вам всего доброго. Не забывайте подписываться на мою группу Вконтакте, чтобы знать о заработке в интернете чуть больше. До новых встреч.
Как наработать опыт и найти работу?
Мы разобрались, как выучить JavaScript с нуля самостоятельно, что нужно осваивать в первую очередь и как быстро набрать опыт. Теперь вы готовы сделать первые шаги. Удачи вам в изучении JS и поиске работы!
Рекомендуем
Где искать работу SEO-специалисту: 42 полезных сайта для оптимизаторов
В обзоре собраны полезные ресурсы, где можно искать разовые заказы и постоянную работу специалистам по продвижению сайтов. В том числе удаленную. …
24 сайта для изучения программирования на русском языке
В обзоре собрано больше двух десятков сайтов, где можно изучать программирование. Преимущество отдано бесплатным ресурсам на русском языке. Также …
Число
Числовой тип данных () представляет как целочисленные значения, так и числа с плавающей точкой.
Существует множество операций для чисел, например, умножение , деление , сложение , вычитание и так далее.
Кроме обычных чисел, существуют так называемые «специальные числовые значения», которые относятся к этому типу данных: , и .
-
представляет собой математическую ∞. Это особое значение, которое больше любого числа.
Мы можем получить его в результате деления на ноль:
Или задать его явно:
-
означает вычислительную ошибку. Это результат неправильной или неопределённой математической операции, например:
Значение «прилипчиво». Любая операция с возвращает :
Если где-то в математическом выражении есть , то результатом вычислений с его участием будет .
Математические операции – безопасны
Математические операции в JavaScript «безопасны». Мы можем делать что угодно: делить на ноль, обращаться с нечисловыми строками как с числами и т.д.
Скрипт никогда не остановится с фатальной ошибкой (не «умрёт»). В худшем случае мы получим как результат выполнения.
Специальные числовые значения относятся к типу «число». Конечно, это не числа в привычном значении этого слова.
Подробнее о работе с числами мы поговорим в главе Числа.
Гарантия
Всем участникам курсов, независимо от пола, возраста, ориентации и религиозной принадлежности…
Гарантия:
- Если объяснения будут вам непонятны,
- Если курсы не дадут вам новых знаний и умений,
- Если вы не сможете подключиться к системе онлайн-обучения
..то вы сможете получить деньги назад.
Для этого достаточно не позже окончания первой недели курса написать мне, указать причину из этого списка и что именно вас не устраивает, удостоверить свою личность, чтобы возврат не потребовал хакер, и тогда ваше участие будет прекращено, а вы получите ваши деньги обратно, удобным для вас способом.
Чего НЕ может JavaScript в браузере?
Возможности JavaScript в браузере ограничены ради безопасности пользователя. Цель заключается в предотвращении доступа недобросовестной веб-страницы к личной информации или нанесения ущерба данным пользователя.
Примеры таких ограничений включают в себя:
-
JavaScript на веб-странице не может читать/записывать произвольные файлы на жёстком диске, копировать их или запускать программы. Он не имеет прямого доступа к системным функциям ОС.
Современные браузеры позволяют ему работать с файлами, но с ограниченным доступом, и предоставляют его, только если пользователь выполняет определённые действия, такие как «перетаскивание» файла в окно браузера или его выбор с помощью тега .
Существуют способы взаимодействия с камерой/микрофоном и другими устройствами, но они требуют явного разрешения пользователя. Таким образом, страница с поддержкой JavaScript не может незаметно включить веб-камеру, наблюдать за происходящим и отправлять информацию в ФСБ.
-
Различные окна/вкладки не знают друг о друге. Иногда одно окно, используя JavaScript, открывает другое окно. Но даже в этом случае JavaScript с одной страницы не имеет доступа к другой, если они пришли с разных сайтов (с другого домена, протокола или порта).
Это называется «Политика одинакового источника» (Same Origin Policy). Чтобы обойти это ограничение, обе страницы должны согласиться с этим и содержать JavaScript-код, который специальным образом обменивается данными.
Это ограничение необходимо, опять же, для безопасности пользователя. Страница , которую открыл пользователь, не должна иметь доступ к другой вкладке браузера с URL и воровать информацию оттуда.
-
JavaScript может легко взаимодействовать с сервером, с которого пришла текущая страница. Но его способность получать данные с других сайтов/доменов ограничена. Хотя это возможно в принципе, для чего требуется явное согласие (выраженное в заголовках HTTP) с удалённой стороной. Опять же, это ограничение безопасности.
Подобные ограничения не действуют, если JavaScript используется вне браузера, например — на сервере. Современные браузеры предоставляют плагины/расширения, с помощью которых можно запрашивать дополнительные разрешения.
Изучаем программирование на JavaScript (Head First). Эрик Фримен, Элизабет Робсон
Книга дает всю фундаментальную информацию о программировании на JavaScript. Рассказывает как написать универсальный код для разных браузеров. Материал подан в доступной и легкой форме так, что даже человек не написавший ни строчки кода, сможет довольно быстро погрузиться в процесс JS-разработки.
Преимущества:
- книга дает и базовые знания практику, которая позволит научится писать код;
- книга из популярной серии Head First от издательства O’Reilly (на русском книгу издает Питер);
- разносторонний подход к запоминанию материала;
- наличие примеров, основанных на опыте и реальных проектах;
- наличие наглядных иллюстраций.
Недостатки:
мягкий переплет (книга недолговечна).
Выразительный JavaScript. Современное веб-программирование. Третье издание
Марейн Хавербеке
Выразительный JavaScript. Современное веб-программирование«. Третье издание
Выразительный JavaScript» позволит глубоко погрузиться в тему, научиться писать красивый и эффективный код. Вы познакомитесь с синтаксисом, стрелочными и асинхронными функциями, итератором, шаблонными строками и блочной областью видимости.
Марейн Хавербеке — практик. Получайте опыт и изучайте язык на множестве примеров, выполняя упражнения и учебные проекты. Сначала вы познакомитесь со структурой языка JavaScript, управляющими структурами, функциями и структурами данных, затем изучите обработку ошибок и исправление багов, модульность и асинхронное программирование, после чего перейдете к программированию браузеров.
JavaScript – не Java
Прежде чем вы приступите к изучению JavaScript, вам следует понимать, что
JavaScript – это не Java. Это два совершенно разных языка программирования. JavaScript не имеет ничего общего с языком Java, кроме похожего синтак
сиса.
Java – объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems с 1991 года и официально выпущенный 23 мая 1995 года. Java – это мощный и гораздо более сложный язык программирования, на нём можно писать самые разные программы. Для интернет-страниц есть особая возможность – написание апплетов.
Апплет – это программа на языке Java, которую можно подключить к HTML при помощи тега <applet>. Jаvаапплеты запускаются с помощью компилятора. Апплеты Java встраиваются в веб-страницу, но хранятся на диске как отдельные файлы. Это двоичные файлы, и если вы их откроете, то не увидите исходный код апплета.
Сценарии JavaScript размещаются внутри веб-страницы и не могут существовать отдельно от нее. Для выполнения JS-сценариев не нужен компилятор, они выполняются браузером на стороне пользователя. JS-скрипт – это обычный текст, и вы можете просмотреть код невооруженным взглядом – без какого-либо специального программного обеспечения.
Java — это язык, который основан на классах и отличается быстротой, высоким уровнем защиты и надежностью. Ориентированная на классы модель Java означает, что программы состоят исключительно из классов и их методов. Наследование классов и строгая типизация в языке Java обычно требуют тесно связанные иерархии объектов. Эти требования делают программирование на Java более комплексным, чем программирование на JavaScript.
JavaScript — это легкий язык программирования, который обладает простым синтаксисом, специализированной встроенной функциональностью и минимальными требованиями для создания объектов. Вам не нужно объявлять переменные, классы и методы. Не нужно беспокоиться о том, являются ли методы публичными (public), приватными (private) или защищенными (protected), а также вам не нужно реализовывать интерфейсы. Переменные, параметры и возвращаемые функциями типы JS-скриптов не являются явно типизированными.
Серия «Вы не знаете JavaScript»
Кайл Симпсон

«Типы и грамматические конструкции JS»
В одной из предыдущих книжных подборок мы рассказывали о книге Кайла Симпсона «ES6 и не только», которая отлично подходит для быстрого введения в новые возможности языка JavaScript и является продолжением серии «Вы не знаете JavaScript» (You don’t know JS).
В серии шесть книг — в них автор подробно рассказывает о нюансах работы языка JavaScript. Асинхронность, типы данных, прототипы, замыкания и другие темы разбираются максимально детально, да ещё и с практическими нетривиальными примерами. Первое издание вышло около пяти лет назад, но за это время книги не потеряли актуальности.
Эти книги подойдут как новичкам, получившим свой первый опыт программирования на JavaScript, так и мидл-разработчикам, желающим подтянуть теоретические знания. Можно сказать больше: если вы собираетесь идти на собеседование фронтенд-разработчика, то эти книги однозначно пригодятся, чтобы освежить теоретические знания.
Книги доступны для изучения в репозитории автора или в русском переводе.
Комментарии
Так же, как и в HTML и CSS, возможно писать комментарии в вашем JavaScript коде, что будет проигнорировано браузером, и существует только для того, чтобы давать подсказки вашим друзьям-разработчикам о том, как работает код (и лично вам, если вы вернётесь к коду спустя 6 месяцев и не сможете вспомнить, что вы делали). Комментарии очень полезны, и вы должны часто их использовать, особенно для больших приложений. Вот два типа комментариев:
- Однострочный комментарий пишется после двойного слеша (//), например:
- Комментарий на нескольких строках пишется между строками /* и */, например:
Так, например, мы можем описать наш последний демо-пример JavaScript подобными комментариями:
Преимущества JavaScript
JavaScript полностью изменил взгляд мира на браузеры. Это дало возможность создавать сложные веб-сайты и делать весь бизнес-процесс цифровым! Некоторые преимущества JavaScript:
- Высокая производительность: JS легкий и быстрый, так как его можно сразу запустить в браузере (клиентском компьютере).
- Просто и популярно: мы используем его целую вечность, и он не потерял своей актуальности!
- Совместимость: может использоваться с множеством других языков и приложений
- Снижает нагрузку на сервер, поскольку работает на стороне клиента
- Делает страницы живыми, динамичными и насыщенными
- Он поставляется с множеством бесплатных инструментов для улучшения функциональности
- Функциональность JS может быть расширена до серверной части с помощью Node.js
Подводя итог: функциональное реактивное программирование
FRP представляет собой написание действий, которые, используя чистые функции, реагируют на события и переводят состояние с предыдущего момента времени к следующему. FRP в реализации JavaScript не придерживается двух основных принципов FRP Конала Эллиота, но в абстрагировании от оригинальной концепции есть определенный смысл. JavaScript сильно зависит от побочных эффектов и императивного программирования, но мы, безусловно, можем использовать преимущества концепций FRP для улучшения нашего JS.
Наконец, рассмотрим эту цитату из первого издания Eloquent JavaScript: «Fu-Tzu написал небольшую программу, использующую глобальное состояние и сомнительные переплетения, и, прочитав ее, студент спросил:« Вы предупреждали нас против этих методов, но я нахожу их в вашей программе. Как такое могло случиться?». Фу-Цзы ответил: «Нет необходимости забирать водяной шланг, когда дом не горит». .
Дополнительную информацию о функциональном реактивном программировании можно найти на следующих ресурсах:
- Функциональное реактивное программирование для начинающих
- Функциональное реактивное заблуждение
- Haskell — функциональное реактивное программирование
- Создание реактивной анимации
- Более элегантная спецификация для FRP
- Elm — прощание с FRP
- Ранние успехи и новые направления в функциональном реактивном программировании
- Разрушение FRP
- Rx не является FRP
Заключение
Мы закончим еще одной отличной цитатой из первого издания Eloquent JavaScript: «Студент долгое время сидел за своим компьютером, мрачно хмурился и пытался написать красивое решение сложной проблемы, но не мог найти правильный подход. Фу-Цу ударил его по затылку и крикнул: ‘Введите что-нибудь!’. Студент начал писать уродливое решение, и после того, как он закончил, он внезапно понял прекрасное решение».
Понятия, необходимые для понимания функционального программирования, реактивного программирования и функционального реактивного программирования, может быть трудно осознать, не говоря уже о полном овладении. Написание кода, использующего основные принципы какой-либо парадигмы — это первый шаг, даже если он вначале не является полностью верным. Практика освещает путь вперед, а также помогает пересматривать эти концепции.
Используя этот Справочник в качестве отправной точки, вы можете начать использовать представленные концепции и парадигмы программирования для повышения своего уровня владения JavaScript. Если по описанным темам что-либо еще неясно, пожалуйста, обратитесь к ссылкам в каждом разделе за дополнительными ресурсами. Позже мы рассмотрим новые концепции в следующей статье Справочника современных концепций JavaScript!