1. Что такое JS, для чего используется, почему был создан JavaScript — это язык программирования, который даёт возможность реализовывать сложное поведение веб-страницы. Каждый раз, когда вы видите веб-страницу, она не только отображает статическое содержимое, но и делает большее - своевременно отображает обновление контента, выводит интерактивные карты, 2D/3D анимацию, прокручивает видео и т.д. - будьте уверены, здесь не обошлось без JavaScript. • Изначально JavaScript был создан, чтобы «сделать веб-страницы живыми». • Программы на этом языке называются скриптами. Они могут встраиваться в HTML и выполняться автоматически при загрузке вебстраницы. • Скрипты распространяются и выполняются, как простой текст. Им не нужна специальная подготовка или компиляция для запуска. Почему 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 и т.д. Что может JavaScriptв браузере? Добавлять новый HTML-код на страницу, изменять существующее содержимое, модифицировать стили. • Реагировать на действия пользователя, щелчки мыши, перемещения указателя, нажатия клавиш. • Отправлять сетевые запросы на удалённые сервера, скачивать и загружать файлы (технологии AJAX и COMET). • Получать и устанавливать куки, задавать вопросы посетителю, показывать сообщения. • Запоминать данные на стороне клиента («local storage»). Возможности JavaScript в браузере ограничены ради безопасности пользователя. Цель заключается в предотвращении доступа недобросовестной веб-страницы к личной информации или нанесения ущерба данным пользователя. • Примеры таких ограничений включают в себя: • JavaScript на веб-странице не может читать/записывать произвольные файлы на жёстком диске, копировать их или запускать программы. Он не имеет прямого доступа к системным функциям ОС. Что делает JavaScript особенным? Полная интеграция с HTML/CSS. • Простые вещи делаются просто. • Поддерживается всеми основными браузерами и включён по умолчанию. • JavaScript – это почти единственная браузерная технология, сочетающая в себе все эти три вещи. 2.Окружение для JS Chrome Firefox Node.js Что такое Node.js? • Серверная среда выполнения JavaScript • Движок JavaScript Chrome V8 • Менеджер пакетов NPM 3.Ключевые слова let, var и const Переменные let и const появились в версии EcmaScript 2015 года (ES6), и сейчас используются намного чаще чем var. Используя ключевое слово let, можно объявить переменную без присвоения ей начального значения. В таком случае она будет равна undefined: При помощи const нельзя объявлять переменные без значения К переменным let и const нельзя обращаться до их объявления в коде Оба типа переменных имеют блочную область видимости и не становятся частью глобального объекта (window в браузере, global в Node.js). Блочная область видимости не даёт получить значение переменной вне блока, где она была объявлена. Если объявить переменные внутри блока if, то обращение к ним вне блока будет выбрасывать ошибку Одинаковые имена переменных Скопировать ссылку на секцию "Одинаковые имена переменных" Объявление переменной с именем, которое уже используется в текущей области видимости, приведёт к ошибке: То же правило работает и при использовании const, и при использовании смешанного подхода В то же время можно объявлять переменные с одинаковым именем в разных областях видимости. В этом случае значение будет зависеть от той области видимости, где происходит чтение Смена значения в let и const Скопировать ссылку на секцию "Смена значения в let и const" Значение в переменной, созданной через let, можно изменять Стартовое значение const изменить нельзя, будь то примитивное значение Однако объект, хранящийся в const, можно мутировать. Объекты хранятся по ссылке, и изменение объекта не приводит к изменению ссылки на него Переменные var Скопировать ссылку на секцию "Переменные var" Объявление переменных при помощи ключевого слова var было в JavaScript с первых версий. Объявление Скопировать ссылку на секцию "Объявление" Переменные var можно объявлять без присвоения им значения, в таком случае они будут равны undefined: Переменные, объявленные через var, имеют функциональную область видимости. Они доступны только в пределах текущей функции или глобального объекта, если функции нет Объявление переменных вне функций делает их глобальными переменными. Они доступны как свойства глобального объекта К переменным, объявленным при помощи ключевого слова var, можно обращаться до момента объявления. В отличие от let и const, ошибки это не вызовет. Такое поведение называется hoisting - «всплытие» Смена значения в var Скопировать ссылку на секцию "Смена значения в var" Значение, хранящееся в переменной var, можно изменить двумя способами: -обратиться к имени переменной и присвоить новое значение -обратиться к имени переменной вместе с ключевым словом var 4. Область видимости в JS Область видимости определяет, где в коде программы будут доступны переменные и функции. В JavaScript есть три типа области видимости — глобальная и локальные (global scope и function/block scope). Согласно официальной спецификации: «Если переменная создаётся внутри объявления функции, то её область видимости определяется как локальная и ограничивается этой функцией.» Переменная, созданная с помощью оператора let, доступна внутри блока, в котором она была создана и в любом вложенном блоке. переменная, созданная с помощью оператора var, доступна внутри функции и в любой вложенной функции. Global Scope -Переменные доступны глобально вне функций и внутри любой функции Function Scope -Доступ к локальным переменным возможен только изнутри функции, в которой они объявлены. Block Scope -Переменные, объявленные внутри блока {}, не могут быть доступны извне блока. 5. Типы данных в JS 6. Массивы в JS 7. Методы массивов 8. Ссылки и значения в JS. Привести примеры 9. Функции. Вложенные функции. Способы объявления функций. 10. Hoisting 11. Объекты в JS. Методы работы с объектами. JSON 12. Классы в JS 13. Наследование в JS. Прототип 14. DOM, BOM, глобальный объект . 15. Манипулирование DOM, методы и свойства 16. Отслеживание событий Angular 1. Что такое Angular, структура Angular приложения 2.Формы в Angular, особенности 3.Привязка данных в Angular 4.Компоненты 5. Lifecycle 6. Routing 7. Angular Serviсe 8.Dependency Injection .