Similar presentations:
js-theory-1
1. JavaScript
УРОК № 1:Введение в JavaScript. Структура кода. Переменные.
Типы данных. Функции alert(), prompt(), confirm().
Математические операторы
2. JavaScript
3. learn.javascript.ru
ИСТОЧНИКИ ЗНАНИЙ4. Что такое JavaScript?
Изначально JavaScript был создан, чтобы «сделать веб-страницы живыми».Программы на этом языке называются скриптами. Они могут встраиваться
в HTML и выполняться автоматически при загрузке веб-страницы.
Скрипты распространяются и выполняются, как простой текст. Им не нужна
специальная подготовка или компиляция для запуска.
Это отличает JavaScript от другого языка – Java.
5. Почему JavaScript?
Когда JavaScript создавался, у него было другое имя – «LiveScript». Однако,язык Java был очень популярен в то время, и было решено, что
позиционирование JavaScript как «младшего брата» Java будет полезно.
Со временем JavaScript стал полностью независимым языком со своей
собственной спецификацией, называющейся ECMAScript, и сейчас не имеет
никакого отношения к Java.
6.
Сегодня JavaScript может выполняться не только в браузере, но и насервере или на любом другом устройстве, которое имеет специальную
программу, называющуюся «движком» JavaScript.
У браузера есть собственный движок, который иногда называют
«виртуальная машина JavaScript».
7. Что может JavaScript в браузере?
Современный JavaScript – это «безопасный» язык программирования. Он непредоставляет низкоуровневый доступ к памяти или процессору, потому что
изначально был создан для браузеров, не требующих этого.
Возможности JavaScript сильно зависят от окружения, в котором он работает.
Например, Node.JS поддерживает функции чтения/записи произвольных файлов,
выполнения сетевых запросов и т.д.
В браузере для JavaScript доступно всё, что связано с манипулированием вебстраницами, взаимодействием с пользователем и веб-сервером.
8. Что может JavaScript в браузере?
Например, в браузере JavaScript может:• Добавлять новый HTML-код на страницу, изменять существующее содержимое,
модифицировать стили.
• Реагировать на действия пользователя, щелчки мыши, перемещения указателя,
нажатия клавиш.
• Отправлять сетевые запросы на удалённые сервера, скачивать и загружать файлы
(технологии AJAX и COMET).
• Получать и устанавливать куки, задавать вопросы посетителю, показывать
сообщения.
• Запоминать данные на стороне клиента.
9. Чего НЕ может JavaScript в браузере?
Возможности JavaScript в браузере ограничены ради безопасности пользователя.Цель заключается в предотвращении доступа недобросовестной веб-страницы к
личной информации или нанесения ущерба данным пользователя.
Примеры таких ограничений включают в себя:
• JavaScript на веб-странице не может читать/записывать произвольные файлы на
жёстком диске, копировать их или запускать программы. Он не имеет прямого
доступа к системным функциям ОС.
• Современные браузеры позволяют ему работать с файлами, но с ограниченным
доступом, и предоставляют его, только если пользователь выполняет
определённые действия, такие как «перетаскивание» файла в окно браузера или
его выбор с помощью тега <input>.
10. Чего НЕ может JavaScript в браузере?
• Существуют способы взаимодействия с камерой/микрофоном и другимиустройствами, но они требуют явного разрешения пользователя. Таким образом,
страница с поддержкой JavaScript не может незаметно включить веб-камеру,
наблюдать за происходящим и отправлять информацию в ФСБ.
• Различные окна/вкладки не знают друг о друге. Иногда одно окно, используя
JavaScript, открывает другое окно. Но даже в этом случае JavaScript с одной
страницы не имеет доступа к другой, если они пришли с разных сайтов (с другого
домена, протокола или порта).
• Это называется «Политика одинакового источника» (Same Origin Policy). Чтобы
обойти это ограничение, обе страницы должны согласиться с этим и содержать
JavaScript-код, который специальным образом обменивается данными.
• Это ограничение необходимо, опять же, для безопасности пользователя. Страница
https://anysite.com, которую открыл пользователь, не должна иметь доступ к
другой вкладке браузера с URL https://gmail.com и воровать информацию оттуда.
11. Чего НЕ может JavaScript в браузере?
• JavaScript может легко взаимодействовать с сервером, с которого пришла текущаястраница. Но его способность получать данные с других сайтов/доменов
ограничена. Хотя это возможно в принципе, для чего требуется явное согласие
(выраженное в заголовках HTTP) с удалённой стороной. Опять же, это ограничение
безопасности.
• Подобные ограничения не действуют, если JavaScript используется вне браузера,
например — на сервере. Современные браузеры предоставляют
плагины/расширения, с помощью которых можно запрашивать дополнительные
разрешения.
12. Что делает JavaScript особенным?
Как минимум, три сильные стороны JavaScript:• Полная интеграция с HTML/CSS.
• Простые вещи делаются просто.
• Поддерживается всеми основными браузерами и включён по умолчанию.
JavaScript – это единственная браузерная технология, сочетающая в себе все эти три
вещи.
Вот что делает JavaScript особенным. Вот почему это самый распространённый
инструмент для создания интерфейсов в браузере.
Хотя, конечно, JavaScript позволяет делать приложения не только в браузерах, но и на
сервере, на мобильных устройствах и т.п.
13. Консоль разработчика
Код уязвим для ошибок. И вы, скорее всего, будете делать ошибки в коде… Впрочем,давайте будем откровенны: вы точно будете совершать ошибки в коде. В конце
концов, вы человек, а не робот.
Но по умолчанию в браузере ошибки не видны. То есть, если что-то пойдёт не так, мы
не увидим, что именно сломалось, и не сможем это починить.
Для решения задач такого рода в браузер встроены так называемые «Инструменты
разработки» (Developer tools или сокращённо — devtools).
14. Консоль разработчика
Chrome и Firefox снискали любовь подавляющего большинства программистов вомногом благодаря своим отменным инструментам разработчика. Остальные
браузеры, хотя и оснащены подобными инструментами, но все же зачастую
находятся в роли догоняющих и по качеству, и по количеству свойств и особенностей.
В общем, почти у всех программистов есть свой «любимый» браузер. Другие
используются только для отлова и исправления специфичных «браузерозависимых»
ошибок.
15. Скрипты JavaScript
16. Скрипты JavaScript
Программы на JavaScript могут быть вставлены в любое место HTML-документа спомощью тега <script>.
17. Структура кода
ИнструкцииИнструкции – это синтаксические конструкции и команды, которые выполняют
действия. В нашем коде может быть столько инструкций, сколько мы захотим.
Инструкции могут отделяться точкой с запятой.
Например, здесь мы разделили сообщение «Привет Мир» на два вызова alert:
Обычно каждую инструкцию пишут на новой строке, чтобы код было легче читать:
18. Структура кода
Точка с запятойВ большинстве случаев точку с запятой можно не ставить, если есть переход на новую
строку. Так тоже будет работать:
В этом случае JavaScript интерпретирует перенос строки как «неявную» точку с
запятой. Это называется автоматическая вставка точки с запятой.
В большинстве случаев новая строка подразумевает точку с запятой. Но «в
большинстве случаев» не значит «всегда»!
В некоторых ситуациях новая строка всё же не означает точку с запятой. Например:
19. Структура кода
КомментарииСо временем программы становятся всё сложнее и сложнее. Возникает
необходимость добавлять комментарии, которые бы описывали, что делает код и
почему.
Комментарии могут находиться в любом месте скрипта. Они не влияют на его
выполнение, поскольку движок просто игнорирует их.
20. Структура кода
КомментарииОднострочные комментарии начинаются с двойной косой черты //.
Часть строки после // считается комментарием.
Такой комментарий может как занимать строку целиком,
так и находиться после инструкции.
Как здесь:
21. Структура кода
КомментарииМногострочные комментарии начинаются косой чертой со звёздочкой /*
и заканчиваются звёздочкой с косой чертой */.
Как вот здесь:
22. Структура кода
КомментарииСодержимое комментария игнорируется, поэтому,
если мы поместим код внутри /* … */, он не будет исполняться.
Это бывает удобно для временного отключения участка кода:
23. Строгий режим — "use strict"
Строгий режим — "use strict"На протяжении долгого времени JavaScript развивался без проблем с обратной
совместимостью. Новые функции добавлялись в язык, в то время как старая
функциональность не менялась.
Преимуществом данного подхода было то, что существующий код продолжал
работать. А недостатком – что любая ошибка или несовершенное решение, принятое
создателями JavaScript, застревали в языке навсегда.
Так было до 2009 года, когда появился ECMAScript 5 (ES5). Он добавил новые
возможности в язык и изменил некоторые из существующих. Чтобы устаревший код
работал, как и раньше, по умолчанию подобные изменения не применяются.
Поэтому нам нужно явно их активировать с помощью специальной директивы: "use
strict".
24. Строгий режим — "use strict"
Строгий режим — "use strict"Директива выглядит как строка: "use strict"
или 'use strict'. Когда она находится в начале
скрипта, весь сценарий работает в
«современном» режиме.
Например:
25. Переменные
JavaScript-приложению обычно нужно работать с информацией. Например:• Интернет-магазин – информация может включать продаваемые товары и корзину
покупок.
• Чат – информация может включать пользователей, сообщения и многое другое.
Переменные используются для хранения этой информации.
26. Переменные
Переменная – это «именованное хранилище» для данных. Мы можем использоватьпеременные для хранения товаров, посетителей и других данных.
Для создания переменной в JavaScript используйте ключевое слово let.
Приведённая ниже инструкция создаёт (другими словами: объявляет или
определяет) переменную с именем «message»:
Теперь можно поместить в неё данные, используя оператор присваивания =:
27. Переменные
Строка сохраняется в области памяти, связанной с переменной. Мы можем получитьк ней доступ, используя имя переменной:
Для краткости можно совместить объявление переменной и запись данных в одну
строку:
28. Переменные
Мы также можем объявить несколько переменных в одной строке:Многострочный вариант немного длиннее, но легче для чтения:
29. Переменные
В JavaScript есть два ограничения, касающиеся имён переменных:Имя переменной должно содержать только буквы, цифры или символы $ и _.
Первый символ не должен быть цифрой.
Примеры допустимых имён:
Примеры неправильных имён переменных:
30. Константы
Чтобы объявить константную, то есть, неизменяемую переменную, используйте constвместо let
Переменные, объявленные с помощью const, называются «константами». Их нельзя
изменить. Попытка сделать это приведёт к ошибке:
Если программист уверен, что переменная никогда не будет меняться, он может
гарантировать это и наглядно донести до каждого, объявив её через const.
31. Константы в верхнем регистре
Широко распространена практика использования констант в качестве псевдонимовдля трудно запоминаемых значений, которые известны до начала исполнения
скрипта.
Названия таких констант пишутся с использованием заглавных букв и подчёркивания.
Например, сделаем константы для различных цветов в «шестнадцатеричном
формате»:
32. Типы данных
Значение в JavaScript всегда относится к данным определённого типа.Например, это может быть строка или число.
Есть 8 основных типов данных в JavaScript.
Переменная в JavaScript может содержать любые данные.
В один момент там может быть строка, а в другой – число:
33. Типы данных
ЧислоЧисловой тип данных (number) представляет как целочисленные значения, так и
числа с плавающей точкой.
Существует множество операций для чисел, например, умножение *, деление /,
сложение +, вычитание - и так далее.
Кроме обычных чисел, существуют так называемые «специальные числовые
значения», которые относятся к этому типу данных: Infinity, -Infinity и NaN.
34. Типы данных
ЧислоInfinity представляет собой математическую бесконечность ∞. Это особое значение,
которое больше любого числа.
Мы можем получить его в результате деления на ноль:
Или задать его явно:
35. Типы данных
ЧислоNaN означает вычислительную ошибку. Это результат неправильной или
неопределённой математической операции, например:
Значение NaN «прилипчиво». Любая операция с NaN возвращает NaN:
Математические операции в JavaScript «безопасны». Мы можем делать что угодно:
делить на ноль, обращаться с нечисловыми строками как с числами и т.д. Скрипт
никогда не остановится с фатальной ошибкой (не «умрёт»). В худшем случае мы
получим NaN как результат выполнения.
36. Типы данных
BigIntВ JavaScript тип «number» не может содержать числа больше, чем (253-1) (т. е.
9007199254740991), или меньше, чем -(253-1) для отрицательных чисел. Это
техническое ограничение вызвано их внутренним представлением.
Для большинства случаев этого достаточно. Но иногда нам нужны действительно
гигантские числа, например, в криптографии или при использовании метки времени
(«timestamp») с микросекундами.
Тип BigInt был добавлен в JavaScript, чтобы дать возможность работать с целыми
числами произвольной длины.
37. Типы данных
BigIntЧтобы создать значение типа BigInt, необходимо добавить n в конец числового
литерала:
38. Типы данных
СтрокаСтрока (string) в JavaScript должна быть заключена в кавычки.
В JavaScript существует три типа кавычек.
• Двойные кавычки: "Привет".
• Одинарные кавычки: 'Привет'.
• Обратные кавычки: `Привет`.
39. Типы данных
СтрокаДвойные или одинарные кавычки являются «простыми», между ними нет разницы в
JavaScript.
Обратные же кавычки имеют расширенную функциональность. Они позволяют нам
встраивать выражения в строку, заключая их в ${…}. Например:
40. Типы данных
СтрокаВыражение внутри ${…} вычисляется, и его результат становится частью строки. Мы
можем положить туда всё, что угодно: переменную name, или выражение 1 + 2, или
что-то более сложное.
Обратите внимание, что это можно делать только в обратных кавычках. Другие
кавычки не имеют такой функциональности встраивания!
41. Типы данных
Булевый (логический) типБулевый тип (boolean) может принимать только два значения: true (истина) и false
(ложь).
Такой тип, как правило, используется для хранения значений да/нет: true значит «да,
правильно», а false значит «нет, не правильно». Например:
Булевые значения также могут быть результатом сравнений:
42. Типы данных
NullСпециальное значение null не относится ни к одному из типов, описанных выше.
Оно формирует отдельный тип, который содержит только значение null:
В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым
указателем», как в некоторых других языках.
Это просто специальное значение, которое представляет собой «ничего», «пусто»
или «значение неизвестно».
В приведённом выше коде указано, что значение переменной age неизвестно.
43. Типы данных
UndefinedСпециальное значение undefined формирует тип из самого себя так же, как и null.
Оно означает, что «значение не было присвоено».
Если переменная объявлена, но ей не присвоено никакого значения, то её значением
будет undefined:
Обычно null используется для присвоения переменной «пустого» или «неизвестного»
значения, а undefined – для проверок, была ли переменная назначена.
44. Оператор typeof
Оператор typeof возвращает тип аргумента. Это полезно, когда мы хотимобрабатывать значения различных типов по-разному или просто хотим сделать
проверку.
У него есть две синтаксические формы:
• Синтаксис оператора: typeof x.
• Синтаксис функции: typeof(x).
Другими словами, он работает со скобками или без скобок. Результат одинаковый.
45. Оператор typeof
Вызов typeof x возвращает строку с именем типа:46. Функция alert()
Функция alert() показывает сообщение и ждёт, пока пользователь нажмёт кнопку«ОК».
Например:
Это небольшое окно с сообщением называется модальным окном. Понятие
модальное означает, что пользователь не может взаимодействовать с интерфейсом
остальной части страницы, нажимать на другие кнопки и т.д. до тех пор, пока
взаимодействует с окном. В данном случае – пока не будет нажата кнопка «OK».
47. Функция prompt()
Функция prompt() отображает модальное окно с текстом, полем для ввода текста икнопками OK/Отмена.
Функция prompt() принимает два аргумента:
• title - Текст для отображения в окне.
• default - Необязательный второй параметр, который
устанавливает начальное значение в поле для текста в окне.
48. Функция prompt()
Пользователь может напечатать что-либо в поле ввода и нажать OK. Введённый текстбудет присвоен переменной result. Пользователь также может отменить ввод
нажатием на кнопку «Отмена» или нажав на клавишу Esc. В этом случае значением
result станет null.
Вызов prompt() возвращает текст, указанный в поле для ввода, или null, если ввод
отменён пользователем. Например:
49. Функция confirm()
Функция confirm() отображает модальное окно с текстом вопроса question и двумякнопками: OK и Отмена.
Результат – true, если нажата кнопка OK. В других случаях – false.
Например:
50. Математика
Поддерживаются следующие математические операторы:• Сложение +
• Вычитание • Умножение *
• Деление /
• Взятие остатка от деления %
• Возведение в степень **
51. Математика
Взятие остатка %Оператор взятия остатка %, несмотря на обозначение, никакого отношения к
процентам не имеет.
Результат a % b – это остаток от целочисленного деления a на b.
Например:
52. Математика
Возведение в степень **В выражении a ** b оператор возведения в степень умножает a на само себя b раз.
Например:
Математически, оператор работает и для нецелых чисел. Например, квадратный
корень является возведением в степень 1/2:
53. Математика
Сокращённая арифметика с присваиваниемЧасто нужно применить оператор к переменной и сохранить результат в ней же.
Например:
Эту запись можно укоротить при помощи совмещённых операторов += и *=:
54. Математика
Инкремент/ДекрементОдной из наиболее частых числовых операций является увеличение или уменьшение
на единицу.
Для этого существуют даже специальные операторы:
• Инкремент ++ увеличивает переменную на 1:
• Декремент -- уменьшает переменную на 1:
55.
Практика 1Создать файл index.html с базовой структурой HTML документа
С помощью функции alert('text') отобразите диалоговое окно с
текстом "Я JavaScript!".
56.
Практика 2Создать файл index.html с базовой структурой HTML документа
Объявите две переменные: admin и name.
Запишите строку "Джон" в переменную name.
Скопируйте значение из переменной name в admin.
Выведите на экран значение admin, используя функцию alert
(должна показать «Джон»).
57.
Практика 3Создать файл index.html с базовой структурой HTML документа
Создайте страницу, которая спрашивает имя у пользователя и
выводит его.
programming