Основы javascript для начинающих разработчиков
Содержание:
- Строительные блоки JavaScript
- Основные характеристики JavaScript
- Рефакторинг кода на JavaScript
- Вынос скриптов в заголовок HEAD
- Переменные
- Точка с запятой
- Выразительный JavaScript. Марейн Хавербеке
- IDE
- Как устроен JavaScript
- Языки «над» JavaScript
- Чистый код. Создание, анализ и рефакторинг
- Подключение в любом месте
- Что вам нужно для изучения JavaScript?
- Аналогия из жизни
- Справочники, и как в них искать
- Гарантия
- Серия «Вы не знаете JavaScript»
- Преимущества JavaScript
- Изучаем программирование на JavaScript (Head First). Эрик Фримен, Элизабет Робсон
- Советы по эфективному изучению JavaScript
- Комментарии
- Секреты JavaScript ниндзя
- Комментарии
- Выводы
Строительные блоки JavaScript
Переменные
Переменные применяются для хранения значений, которые мы можем использовать позже. Переменные могут содержать любое значение — текст, числа, данные (такие как «массивы» и «объекты»), даже код (в виде «функций»). Мы объявляем переменную через выражение var:
Имена переменных могут быть произвольными, не должны начинаться с цифры и не должны включать дефис.
Вы можете определить одну переменную на выражение:
Вы также можете определить несколько переменных в одном выражении, разделив их запятыми:
После того, как переменной присвоено значение, вы можете использовать эту переменную, когда хотите получить доступ к её значению.
Переменные являются ключевым понятием в философии «не повторяйся». Если вам нужно использовать значение несколько раз, вы, вероятно, пожелаете хранить его в переменной.
Функции
Функции являются основным строительным блоком программ JavaScript. Они предлагают способ, при котором мы можем положить небольшие кусочки функциональности в аккуратно завёрнутый пакет. Рассмотрим, к примеру, функцию, которая складывает два числа:
Эта функция принимает два аргумента: a и b, складывает их и возвращает результат.
Это корректный кусок JavaScript, но написан так, что у нас нет никакого способа вызвать функцию, если мы действительно хотим складывать два числа. Можем решить эту проблему присваивая нашу функцию переменной:
Мы взяли выражение функции и присвоили её переменной. Теперь мы можем вызвать нашу функцию, используя имя этой переменной:
Мы могли бы также использовать объявление функции, чтобы дать функции имя:
Это позволяет нам вызывать функцию как и раньше, но данный подход следует использовать с осторожностью, как описано в этом посте. Итог: именовании функции через её объявление может иметь неожиданные результаты, если вы не в полной мере понимаете особенность JavaScript известную как «поднятие переменной»
Тема выходит за рамки данного руководства, но сейчас мы будем придерживаться присвоения функций переменным
Итог: именовании функции через её объявление может иметь неожиданные результаты, если вы не в полной мере понимаете особенность JavaScript известную как «поднятие переменной». Тема выходит за рамки данного руководства, но сейчас мы будем придерживаться присвоения функций переменным.
Функции и область видимости переменных
Переменные, объявленные внутри функции с выражением var, доступны только внутри функции. Это обычная рекомендация и все переменные должны быть объявлены с var, если они не предполагаются глобальными, иными словами, доступными в любом месте кода. Обычно это не то чего бы вам хотелось, разве только нужно, чтобы другой код изменил значение переменной.
Что это значит, когда переменная доступна только внутри функции? Давайте взглянем на следующий код:
Внимание! Некорректный код
В приведённом выше примере, как только мы пытаемся использовать foo за пределами функции, даже просто для проверки её типа, наш браузер сообщит об ошибке и любой код после строки с foo работать не будет.
Следующий пример показывает, что у нас может быть две переменные с одинаковым именем, при этом каждая переменная находится в своей области видимости. В примере мы объявляем переменную foo и присваиваем ей значение qux. Затем внутри функции мы объявляем другую переменную с именем foo и присваиваем ей значение bar
Обратите внимание, что за пределами функции переменная foo не меняется, даже при создании переменной foo внутри функции
Несмотря на то, что обе переменные названы одинаково, JavaScript считает их совершенно разными сущностями
Это одна из множества причин, почему важно давать переменным осмысленные имена
Область видимости переменной является одним из фундаментальных понятий JavaScript и одним из понятий, с которым люди часто испытывают трудность
Важно помнить, что:
- вы всегда должны объявлять переменные с var;
- переменные, объявленные внутри функции через var, не доступны за пределами этой функции;
- переменные, объявленные без var, всегда глобальны.
Помните, что переменные, которые не объявлены с ключевым словом var являются глобальными неявно! В следующем примере переменная a доступна за пределами функции, потому что она не была объявлена с ключевым словом var — а это, как правило, нежелательно.
Внимание! Небезопасный код
JavaScript
Основные характеристики JavaScript
Высокоуровневый
Он даёт программисту абстракции, которые позволяют не обращать внимание на особенности аппаратного обеспечения, на котором выполняются JavaScript-программы. Язык автоматически управляет памятью, используя сборщик мусора
Разработчик, в результате, может сосредоточиться на решении стоящих перед ним задач, не отвлекаясь на низкоуровневые механизмы (хотя, надо отметить, это не отменяет необходимости в рациональном использовании памяти). Язык предлагает мощные и удобные средства для работы с данными различных типов.
Динамический. В отличие от статических языков программирования, динамические языки способны, во время выполнения программы, выполнять действия, которые статические языки выполняют во время компиляции программ. У такого подхода есть свои плюсы и минусы, но он даёт в распоряжение разработчика такие мощные возможности, как динамическая типизация, позднее связывание, рефлексия, функциональное программирование, изменение объектов во время выполнения программы, замыкания и многое другое.
Динамически типизированный. Типы переменных при JS-разработке задавать необязательно. В одну и ту же переменную можно, например, сначала записать строку, а потом — целое число.
Слабо типизированный. В отличие от языков с сильной типизацией, языки со слабой типизацией не принуждают программиста, например, использовать в неких ситуациях объекты определённых типов, выполняя, при необходимости, неявные преобразования типов. Это даёт больше гибкости, но JS-программы не являются типобезопасными, из-за этого усложняются задачи проверки типов (на решение этой проблемы направлены TypeScript и Flow).
Интерпретируемый. Широко распространено мнение, в соответствии с которым JavaScript является интерпретируемым языком программирования, что означает, что программы, написанные на нём, не нуждаются в компиляции перед выполнением. JS в этом плане противопоставляют таким языкам, как C, Java, Go. На практике же браузеры, для повышения производительности программ, выполняют компиляцию JS-кода перед его выполнением. Этот шаг, однако, прозрачен для программиста, он не требует от него дополнительных усилий.
Мультипарадигменный. JavaScript не навязывает разработчику использование какой-то конкретной парадигмы программирования, в отличие, например, от Java (объектно-ориентированное программирование) или C (императивное программирование). Писать JS-программы можно, используя объектно-ориентированную парадигму, в частности — применяя прототипы и появившиеся в стандарте ES6 классы. Программы на JS можно писать и в функциональном стиле, благодаря тому, что функции здесь являются объектами первого класса. JavaScript допускает и работу в императивном стиле, используемом в C.
Рефакторинг кода на JavaScript
Мартин Фаулер
«Рефакторинг кода на JavaScript»
Мартин Фаулер вряд ли нуждается в особом представлении. Он написал с десяток книг, где поделился богатым опытом написания качественного кода. Одна из последних его работ — «Рефакторинг кода на JavaScript».
Автор на примерах разбирает проблемные места и объясняет, как улучшить код. В результате читатель буквально слушает историю опытного коллеги и может сразу всё проверить на практике.
Книга читается легко, можно читать всё по порядку или отдельные главы
Совсем новичкам книга не подойдёт: перед прочтением важно разобраться с основными возможностями языка JavaScript
Вынос скриптов в заголовок HEAD
Обычно javascript стараются отделить от собственно документа.
Для этого его помещают внутрь тега , а в теле страницы по возможности оставляется чистая верстка.
В следующем примере javascript-код только описывает функцию , а ее вызов осуществляется по нажатию на кнопку .
<html> <head> *!* <script type="text/javascript"> function count_rabbits() { for(var i=1; i<=3; i++) { // оператор + соединяет строки alert("Из шляпы достали "+i+" кролика!") } } </script> */!* </head> <body> *!*<input type="button" onclick="count_rabbits()" value="Считать кролей!"/>*/!* </body> </html>
Для указания запускаемой по клику функции в был использован атрибут . Это лишь вершина мощного айсберга javascript-событий.
Переменные
Можно объявить при помощи:
- (константа, т.е. изменению не подлежит)
- (устаревший способ, подробности позже)
Имя переменной может включать:
- Буквы и цифры, однако цифра не может быть первым символом.
- Символы и используются наряду с буквами.
- Иероглифы и символы нелатинского алфавита также допустимы, но обычно не используются.
Переменные типизируются динамически. В них могут храниться любые значения:
Всего существует 8 типов данных:
- для целых и вещественных чисел,
- для работы с целыми числами произвольной длины,
- для строк,
- для логических значений истинности или ложности: ,
- – тип с единственным значением , т.е. «пустое значение» или «значение не существует»,
- – тип с единственным значением , т.е. «значение не задано»,
- и – сложные структуры данных и уникальные идентификаторы; их мы ещё не изучили.
Оператор возвращает тип значения переменной, с двумя исключениями:
Подробности: Переменные, Типы данных.
Точка с запятой
В большинстве случаев точку с запятой можно не ставить, если есть переход на новую строку.
Так тоже будет работать:
В этом случае JavaScript интерпретирует перенос строки как «неявную» точку с запятой. Это называется .
В большинстве случаев новая строка подразумевает точку с запятой. Но «в большинстве случаев» не значит «всегда»!
В некоторых ситуациях новая строка всё же не означает точку с запятой. Например:
Код выведет , потому что JavaScript не вставляет здесь точку с запятой. Интуитивно очевидно, что, если строка заканчивается знаком , значит, это «незавершённое выражение», поэтому точка с запятой не требуется. И в этом случае всё работает, как задумано.
Но есть ситуации, где JavaScript «забывает» вставить точку с запятой там, где она нужна.
Ошибки, которые при этом появляются, достаточно сложно обнаруживать и исправлять.
Пример ошибки
Если вы хотите увидеть конкретный пример такой ошибки, обратите внимание на этот код:
Пока нет необходимости знать значение скобок и . Мы изучим их позже. Пока что просто запомните результат выполнения этого кода: выводится , а затем .
А теперь добавим перед кодом и не поставим в конце точку с запятой:
Теперь, если запустить код, выведется только первый , а затем мы получим ошибку!
Всё исправится, если мы поставим точку с запятой после :
Теперь мы получим сообщение «Теперь всё в порядке», следом за которым будут и .
В первом примере без точки с запятой возникает ошибка, потому что JavaScript не вставляет точку с запятой перед квадратными скобками . И поэтому код в первом примере выполняется, как одна инструкция. Вот как движок видит его:
Но это должны быть две отдельные инструкции, а не одна. Такое слияние в данном случае неправильное, оттого и ошибка. Это может произойти и в некоторых других ситуациях.
Мы рекомендуем ставить точку с запятой между инструкциями, даже если они отделены переносами строк. Это правило широко используется в сообществе разработчиков. Стоит отметить ещё раз – в большинстве случаев можно не ставить точку с запятой. Но безопаснее, особенно для новичка, ставить её.
Выразительный JavaScript. Марейн Хавербеке
В процессе чтения книги программист знакомится с синтаксисом языка и учится писать эффективный код. Автор предлагает множество упражнений и примеров, исходя из своего опыта, чтобы читатель смог быстрее вникнуть в тему и закрепить полученные знания. Вторая часть издания посвящена типовым ошибкам, которая возникает в процессе работы и их устранению.
Преимущества:
- рассматриваются почти все аспекты JS;
- информация описана четко и по делу;
- много упражнений и примеров.
Недостатки:
- читать ее следует тем, кто имеет определенную базу знаний Java;
- мягкая обложка;
- в изложении чувствуется пренебрежение автора к языку JavaScript.
IDE
Хотя вы можете набирать и запускать JS-программу с помощью блокнота, IDE упрощает отладку кода и обеспечивает поддержку систем ALM (Application Lifecycle Management). Вот 3 лучших редактора IDE / исходного кода:
- WebStorm WebStorm обеспечивает интеллектуальную помощь и автозавершение кода, рефакторинг для CSS, TypeScript, JS. Вы можете проверить свою функциональность и устранить неполадки с помощью встроенного отладчика, ориентированного как на Node.js, так и на клиентский код. Используйте 30-дневную пробную версию, чтобы ознакомиться с продуктом, прежде чем покупать его.
- Visual Studio Code: буквально нет языка, который не поддерживает VS Code. Это бесплатная, удобная для разработчиков кроссплатформенная среда IDE, которая предлагает такие функции, как встроенная интеграция с Git, интеллектуальное завершение кода, отладка кода из самого редактора и многое другое. Он очень расширяемый.
- Atom Atom — очень популярная IDE от GitHub. Он обеспечивает интеллектуальное завершение кода на основе контекста, простую навигацию по коду, полный набор диагностических инструментов для понимания и отладки кода и многие другие функции. Это бесплатно и с открытым исходным кодом, и вы можете добавить немного веселья в код, используя предустановленные темы и стили.
Онлайн-среда разработки Javascript:
AWS Cloud9 : помимо JS, AWS Cloud9 также поддерживает разработку для C, C ++, Perl, Python, Node.js и т. Д. Оно полностью написано на JS, а серверная часть находится на Node.js. Это онлайн-среда с открытым исходным кодом, и для получения доступа требуется учетная запись AWS. Некоторые функции включают подсветку синтаксиса, поддержку npm и основных команд UNIX, одновременное редактирование, анализ языка в реальном времени и настраиваемые привязки клавиш.
Как устроен JavaScript
Дуглас Крокфорд
«Как устроен JavaScript»
Дуглас Крокфорд — известный специалист в мире JavaScript. Он рассказывает, как язык устроен «под капотом». Книга не учит программированию, а объясняет нюансы языка, поэтому рекомендуем тем, кто осилил Кайла Симпсона — это логическое продолжение его работ.
Вот неполный список вопросов, на которые отвечает книга:
- Как устроены объекты
- Почему ООП в JavaScript реализовано именно так
- Как работают генераторы
- Зачем нужен и как используется оператор this
- Как JavaScript работает с числами.
Если книга не учит программировать, то зачем её читать разработчикам? Чтобы лучше понимать, как работает основной инструмент — язык программирования, а заодно подготовиться к очередному собеседованию.
Отдельного внимания заслуживает глава про Wat. Это краткий обзор одноимённого доклада и разбор примеров, которые могут ввести в ступор даже опытных разработчиков.
Языки «над» JavaScript
Синтаксис JavaScript подходит не под все нужды. Разные люди хотят иметь разные возможности.
Это естественно, потому что проекты разные и требования к ним тоже разные.
Так, в последнее время появилось много новых языков, которые транспилируются (конвертируются) в JavaScript, прежде чем запустятся в браузере.
Современные инструменты делают транспиляцию очень быстрой и прозрачной, фактически позволяя разработчикам писать код на другом языке, автоматически преобразуя его в JavaScript «под капотом».
Примеры таких языков:
- CoffeeScript добавляет «синтаксический сахар» для JavaScript. Он вводит более короткий синтаксис, который позволяет писать чистый и лаконичный код. Обычно такое нравится Ruby-программистам.
- TypeScript концентрируется на добавлении «строгой типизации» для упрощения разработки и поддержки больших и сложных систем. Разработан Microsoft.
- Flow тоже добавляет типизацию, но иначе. Разработан Facebook.
- Dart стоит особняком, потому что имеет собственный движок, работающий вне браузера (например, в мобильных приложениях). Первоначально был предложен Google, как замена JavaScript, но на данный момент необходима его транспиляция для запуска так же, как для вышеперечисленных языков.
- Brython транспилирует Python в JavaScript, что позволяет писать приложения на чистом Python без JavaScript.
Есть и другие. Но даже если мы используем один из этих языков, мы должны знать JavaScript, чтобы действительно понимать, что мы делаем.
Чистый код. Создание, анализ и рефакторинг
Роберт Мартин
«Чистый код. Создание, анализ и рефакторинг»
Все хотят писать чистый код — он понятен коллегам, его легко поддерживать и улучшать, в нём каждая строчка написана по делу.
Эта книга — классика и настоящая находка для разработчиков любого уровня
Роберт Мартин приводит много примеров хорошего и плохого кода, заостряет внимание на проектировании и типичных ошибках, которые возникают во время этого процесса. Суть книги — не в готовых решениях, а в том, что автор учит думать о чистом коде и делится подходами, которые помогут развить навык его написания
Примеры в книге приведены на языке Java, но существует репозиторий c адаптацией кода под JavaScript.
Подключение в любом месте
Когда браузер читает 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?
Предварительное знание JavaScript не требуется, но поскольку JavaScript находится внутри веб-страниц и управляет их динамикой, предполагается, что вы знакомы с основами языка HTML, хотя не исключается возможность «параллельного» изучения HTML и JavaScript.
Большенство сценариев JavaScript призваны «оживить» HTML, т. е. цель создания сценария заключается в том, чтобы продемонстрировать, как будет меняться вид страницы при изменении значений параметров HTML-тегов. Вместе собранные и должным образом оформленные такого рода сценарии являются примером разработанного веб-приложения.
Прежде чем мы приступим к написанию первой программы на JavaScript, очень важно заранее позаботиться о том, чтобы все необходимые инструменты у нас были настроены и находились на своих местах. Изучая JavaScript, очень важно запускать примеры, представленные в каждом уроке, изменять их и опять запускать, чтобы проверить, насколько правильно вы понимаете изученный материал
Для этого необходим интерпретатор JavaScript. К счастью, как вы уже знаете, любой веб-браузер включает в себя интерпретатор JavaScript
Изучая JavaScript, очень важно запускать примеры, представленные в каждом уроке, изменять их и опять запускать, чтобы проверить, насколько правильно вы понимаете изученный материал. Для этого необходим интерпретатор JavaScript
К счастью, как вы уже знаете, любой веб-браузер включает в себя интерпретатор JavaScript.
Чтобы писать и выполнять JavaScript-программы, достаточно установить любой современный интернет-браузер (например Yandex, Internet Explorer, Mozilla Firefox или Google Chrome).
Далее в этом учебнике вы увидите, что код на языке JavaScript можно встраивать непосредственно в HTML-файлы, в теги , и при загрузке HTML-файла этот код будет выполняться браузером. Стоит отметить, что вам не нужно поступать так всякий раз, когда требуется протестировать короткий фрагмент программного кода JavaScript.
Самый простой способ поэкспериментировать с кодом JavaScript – воспользоваться встроенным инструментом браузера веб-консоль (Web Console).
Как правило, веб-консоль можно запустить нажатием клавиши F12 или горячей комбинации клавиш – Ctrl+Shift+J. Обычно панель или окно типичного «инструмента разработчика» открывается в виде отдельной панели в верхней или нижней части окна браузера как изображено на рис. 1.
Панель включает множество вкладок, позволяющих исследовать структуру HTML-документа, стили CSS и т. д. Среди них имеется вкладка JavaScript Console, где можно вводить строки программного кода JavaScript и выполнять их.
Для более детального анализа программного кода нам понадобится текстовый редактор с дополнительной функциональностью, упрощающей написание и редактирование программного кода. В качестве такового мы будем использовать редактор Notepad++. Если вы уже пользуетесь другим редактором и успели к нему привыкнуть, то вам ничто не мешает и далее продолжать его использовать.
С большинством примеров, приведенных в нашем учебнике, вы сможете поэкспериментировать прямо на странице сайта воспользовавшись встроенным инструментом — мини-редактором JS.
Это обычный HTML документ
Выходим обратно в HTML
Выполнить код »
Скрыть результаты
Обратите внимание: В подобных простых экспериментах с JavaScript можно опускать теги , и в HTML-файле
Аналогия из жизни
Мы легко поймём концепцию «переменной», если представим её в виде «коробки» для данных с уникальным названием на ней.
Например, переменную можно представить как коробку с названием и значением внутри:
Мы можем положить любое значение в коробку.
Мы также можем изменить его столько раз, сколько захотим:
При изменении значения старые данные удаляются из переменной:
Мы также можем объявить две переменные и скопировать данные из одной в другую.
Повторное объявление вызывает ошибку
Переменная может быть объявлена только один раз.
Повторное объявление той же переменной является ошибкой:
Поэтому следует объявлять переменную только один раз и затем использовать её уже без .
Функциональные языки программирования
Примечательно, что существуют функциональные языки программирования, такие как Scala или Erlang, которые запрещают изменять значение переменной.
В таких языках однажды сохранённое «в коробку» значение остаётся там навсегда. Если нам нужно сохранить что-то другое, язык заставляет нас создать новую коробку (объявить новую переменную). Мы не можем использовать старую переменную.
Хотя на первый взгляд это может показаться немного странным, эти языки вполне подходят для серьёзной разработки.
Более того, есть такая область, как параллельные вычисления, где это ограничение даёт определённые преимущества.
Изучение такого языка (даже если вы не планируете использовать его в ближайшее время) рекомендуется для расширения кругозора.
Справочники, и как в них искать
Самая полная и подробная информация по JavaScript и браузерам есть в справочниках.
Её объём таков, что перевести всё с английского невозможно. Даже сделать «единый полный справочник» не получается, так как изменений много и они происходят постоянно.
Тем не менее, жить вполне можно если знать, куда смотреть.
Есть три основных справочника по JavaScript на английском языке:
-
Mozilla Developer Network – содержит информацию, верную для основных браузеров. Также там присутствуют расширения только для Firefox (они помечены).
Когда мне нужно быстро найти «стандартную» информацию по – ввожу в Google «RegExp MDN», и ключевое слово «MDN» (Mozilla Developer Network) приводит к информации из этого справочника.
-
MSDN – справочник от Microsoft. Там много информации, в том числе и по JavaScript (они называют его «JScript»). Если нужно что-то, специфичное для IE – лучше лезть сразу туда.
Например, для информации об особенностях в IE – полезное сочетание: «RegExp msdn». Иногда к поисковой фразе лучше добавить термин «JScript»: «RegExp msdn jscript».
-
Safari Developer Library – менее известен и используется реже, но в нём тоже можно найти ценную информацию.
Есть ещё справочники, не от разработчиков браузеров, но тоже хорошие:
- http://help.dottoro.com – содержит подробную информацию по HTML/CSS/JavaScript.
- http://javascript.ru/manual – справочник по JavaScript на русском языке, он содержит основную информацию по языку, без функций для работы с документом. К нему можно обращаться и по адресу, если знаете, что искать. Например, так: http://javascript.ru/RegExp.
- http://www.quirksmode.org – информация о браузерных несовместимостях. Этот ресурс сам по себе довольно старый и, в первую очередь, полезен для поддержки устаревших браузеров. Для поиска можно пользоваться комбинацией «quirksmode onkeypress» в Google.
- http://caniuse.com – ресурс о поддержке браузерами новейших возможностей HTML/CSS/JavaScript. Например, для поддержки функций криптографии: .
- https://kangax.github.io/compat-table – таблица с обзором поддержки спецификации ECMAScript различными платформами.
Гарантия
Всем участникам курсов, независимо от пола, возраста, ориентации и религиозной принадлежности…
Гарантия:
- Если объяснения будут вам непонятны,
- Если курсы не дадут вам новых знаний и умений,
- Если вы не сможете подключиться к системе онлайн-обучения
..то вы сможете получить деньги назад.
Для этого достаточно не позже окончания первой недели курса написать мне, указать причину из этого списка и что именно вас не устраивает, удостоверить свою личность, чтобы возврат не потребовал хакер, и тогда ваше участие будет прекращено, а вы получите ваши деньги обратно, удобным для вас способом.
Серия «Вы не знаете JavaScript»
Кайл Симпсон
«Типы и грамматические конструкции JS»
В серии шесть книг — в них автор подробно рассказывает о нюансах работы языка JavaScript. Асинхронность, типы данных, прототипы, замыкания и другие темы разбираются максимально детально, да ещё и с практическими нетривиальными примерами. Первое издание вышло около пяти лет назад, но за это время книги не потеряли актуальности.
Эти книги подойдут как новичкам, получившим свой первый опыт программирования на JavaScript, так и мидл-разработчикам, желающим подтянуть теоретические знания. Можно сказать больше: если вы собираетесь идти на собеседование фронтенд-разработчика, то эти книги однозначно пригодятся, чтобы освежить теоретические знания.
Книги доступны для изучения в репозитории автора или в русском переводе. Ещё можно купить бумажную версию.
Преимущества JavaScript
JavaScript полностью изменил взгляд мира на браузеры. Это дало возможность создавать сложные веб-сайты и делать весь бизнес-процесс цифровым! Некоторые преимущества JavaScript:
- Высокая производительность: JS легкий и быстрый, так как его можно сразу запустить в браузере (клиентском компьютере).
- Просто и популярно: мы используем его целую вечность, и он не потерял своей актуальности!
- Совместимость: может использоваться с множеством других языков и приложений
- Снижает нагрузку на сервер, поскольку работает на стороне клиента
- Делает страницы живыми, динамичными и насыщенными
- Он поставляется с множеством бесплатных инструментов для улучшения функциональности
- Функциональность JS может быть расширена до серверной части с помощью Node.js
Изучаем программирование на JavaScript (Head First). Эрик Фримен, Элизабет Робсон
Книга дает всю фундаментальную информацию о программировании на JavaScript. Рассказывает как написать универсальный код для разных браузеров. Материал подан в доступной и легкой форме так, что даже человек не написавший ни строчки кода, сможет довольно быстро погрузиться в процесс JS-разработки.
Преимущества:
- книга дает и базовые знания практику, которая позволит научится писать код;
- книга из популярной серии Head First от издательства O’Reilly (на русском книгу издает Питер);
- разносторонний подход к запоминанию материала;
- наличие примеров, основанных на опыте и реальных проектах;
- наличие наглядных иллюстраций.
Недостатки:
мягкий переплет (книга недолговечна).
Советы по эфективному изучению JavaScript
Изучение JavaScript, как и других языков программирования – непростое дело, но оно безусловно стоит потраченных сил и времени. Обучение эффективно, когда дается не просто так, а с усилием. Вы должны прилагать сознательные усилия для того, чтобы усваивать новые навыки и умения. Знания, полученные без усилий, подобны кругам на воде – очень скоро от них не останется и следа.
Электронные книги, бесплатные онлайн-курсы и интернет-платформы для обучения с помощью задач – выбор вариантов источников качественных знаний сегодня почти безграничен. Но как мотивировать себя к самостоятельному обучению, как научиться учиться самостоятельно?
Попробуйте следовать нескольким простым, но проверенным на практике советам.
Учиться нужно понемногу, но регулярно. Регулярность – залог успеха в обучении. Спланируйте свои будни так, чтобы вы могли каждый день уделять на изучение JavaScript не менее одного часа. Не пытайтесь за короткий промежуток времени выучить всё и сразу. Разбивка процесса самообразования на небольшие учебные сессии создает ощущение быстрых успехов и мотивирует вернуться к обучению уже на следующий день.
Наихудшее время для обучения – когда вы чувствуете усталость. В такие моменты, главное не заставлять себя – вы не получите ожидаемого результата. Человеческий мозг не может учить что-то бесконечно долго – ему нужно давать перерывы. Занимайтесь по принципу 25\5. Попробуйте на себе практику учить 25 минут и отдыхать 5 минут. Ваш мозг привыкнет к таким равномерным нагрузкам и будет работать максимально продуктивно.
Применяйте практики вспоминания – основу обучения. Чем чаще мы вспоминаем информацию, тем дольше она будет храниться в нашей памяти.
Эффективная техника вспоминания – это отложенное вспоминание: на карточке с одной стороны напишите вопрос, который относится к изученному материалу, а с другой – ответ на него. Выучите содержание карточки, а затем, через день, попытайтесь вспомнить ответ. Если вы дали правильный ответ – карточку можно отложить на неделю до следующего повторения. Если ошиблись – необходимо повторить вопрос уже на следующий день. Чем длиннее у вас будет цепочка успешных оветов, тем больший интервал должен быть перед следующим повторением.
Параллельно с теоретическими занятиями постоянно практикуйтесь. Для приобретения практического опыта достаточно просто много писать и разбирать примеры хорошего кода. Работая с примерами внимательно пройдите по всем строчкам кода – вы должны убедиться, что понимаете, как работает каждая строчка. Не бойтесь экспериментировать. Учитесь выводить в окне браузера какие-то данные и анализировать их. Например, что и после чего выводится на экран, получили ли вы то, что хотели, и если нет – то почему.
Какой бы способ обучения вы не выбрали, не забывайте, что он должен быть интересным для вас и подкрепляться практическими занятиями – примеры лучше тысячи слов. Примеры часто легче понять, чем многостраничную теорию. Поэтому будьте смелее! Надеюсь, что этот учебник станет хорошим подспорьем в ваших начинаниях.
← предыдущая
следующая →
Комментарии
Со временем программы становятся всё сложнее и сложнее. Возникает необходимость добавлять комментарии, которые бы описывали, что делает код и почему.
Комментарии могут находиться в любом месте скрипта. Они не влияют на его выполнение, поскольку движок просто игнорирует их.
Однострочные комментарии начинаются с двойной косой черты .
Часть строки после считается комментарием. Такой комментарий может как занимать строку целиком, так и находиться после инструкции.
Как здесь:
Многострочные комментарии начинаются косой чертой со звёздочкой и заканчиваются звёздочкой с косой чертой .
Как вот здесь:
Содержимое комментария игнорируется, поэтому, если мы поместим код внутри , он не будет исполняться.
Это бывает удобно для временного отключения участка кода:
Используйте горячие клавиши!
В большинстве редакторов строку кода можно закомментировать, нажав комбинацию клавиш Ctrl+/ для однострочного комментария и что-то вроде Ctrl+Shift+/ – для многострочных комментариев (выделите кусок кода и нажмите комбинацию клавиш). В системе Mac попробуйте Cmd вместо Ctrl и Option вместо Shift.
Вложенные комментарии не поддерживаются!
Не может быть внутри .
Такой код «умрёт» с ошибкой:
Не стесняйтесь использовать комментарии в своём коде.
Комментарии увеличивают размер кода, но это не проблема. Есть множество инструментов, которые минифицируют код перед публикацией на рабочий сервер. Они убирают комментарии, так что они не содержатся в рабочих скриптах. Таким образом, комментарии никоим образом не вредят рабочему коду.
Позже в учебнике будет глава Качество кода, которая объяснит, как лучше писать комментарии.
Секреты JavaScript ниндзя
Джон Резиг, Блэр Либо
«Секреты JavaScript ниндзя»
Изучение JavaScript порой вводит в ступор даже разработчиков с опытом. При этом разобраться с основами языка обычно несложно — трудней понять нюансы и особенности. Например, замыкания, объекты высшего порядка, асинхронное выполнение кода и ряд других тем могут оказаться очень сложными для новичков. Разобраться с этими вопросами на реальных примерах поможет книга «Секреты JavaScript ниндзя».
Книга ориентирована на опытных JavaScript-программистов, которые хотят прокачать свои навыки
В книге есть главы с разбором синтаксиса, но основное внимание уделено практическому решению задач, тестированию кода, работе Event Loop и другим прикладным задачам. К концу 2020 года большая часть информации в книге остаётся актуальной, хотя некоторые главы и устарели
Комментарии
Так же, как и в HTML и CSS, возможно писать комментарии в вашем JavaScript коде, что будет проигнорировано браузером, и существует только для того, чтобы давать подсказки вашим друзьям-разработчикам о том, как работает код (и лично вам, если вы вернётесь к коду спустя 6 месяцев и не сможете вспомнить, что вы делали). Комментарии очень полезны, и вы должны часто их использовать, особенно для больших приложений. Вот два типа комментариев:
- Однострочный комментарий пишется после двойного слеша (//), например:
- Комментарий на нескольких строках пишется между строками /* и */, например:
Так, например, мы можем описать наш последний демо-пример JavaScript подобными комментариями:
Выводы
Поздравляем, вы сделали ваш первый шаг в мир JavaScript. Мы начали всего-лишь с теории, чтобы вы привыкли к тому, что вы будете использовать JavaScript, и что именно вы можете делать с его помощью. На этом пути вы увидели несколько примеров кода и выучили, как JavaScript вписывается в остальной код на вашем сайте среди всего прочего.
JavaScript может показаться немного пугающим в данным момент, но не переживайте — в этом курсе мы проведём вас сквозь него простыми шагами, которые имеют смысл, забегая наперёд. В следующей главе мы погрузимся непосредственно в практику, подталкивая вас погрузиться в код и сделать ваши собственные примеры JavaScript.
- Обзор: Первые шаги
- Далее