====== Оглавление ====== - [[.:types:|Типы данных]] - [[.:statements:|Выражения]] ====== Описание ====== JavaScript - скриптовый, динамически слабо типизированный язык программирования... А впрочем опустим это разглагольство. Хотя нет, кое-что нужно все-таки сказать. Что обозначают вышесказанные три слова: скриптовый, динамически и слабо (типизированный). ===== Скриптовый ===== Потому что выполняется он интерпретатором. > Что такое интерпретатор? Это программа, которая выполняет код на лету. То есть читает строку и тут же её выполняет. И так, JavaScript -- скриптовый язык программирования, потому что код выполняется построчно. ===== Динамически типизированный ===== Уже не понятно, да? Сейчас поймешь. Вот пишем мы программку и вдруг нам надо что-то сохранить на время ее работы. Тут пригодятся такие штуки, как переменные (потому что мы их можем менять, пока код выполняется). А вот как это делается в JavaScript (на примере числа): var a = 2; Что же это значит: ''var'' - говорим, что мы хотим создать эти ваши переменные, ''a'' - даем имя (мы же как-то должны потом обратится к ней, чтобы узнать её значение), ''='' - символ (операнд) операции присвоения, ''2'' - значение, которое следует сохранить. И так, если хотя бы чуть чуть знаком с программированием, то наверно знаешь, что все данные можно разделить на числа, строки, булевы (истина и ложь) и т.д. Так вот, //динамическая типизация// сама определяет, какой тип данных введен в переменную. Удобно, не правда ли? ===== Слабо типизирован ===== Слабая типизация (нестрогая) - языки данной типизации совершают большое количество неявных изменений автоматически, даже в том случае если может случиться потеря точности или неоднозначное преобразование. Самый простой пример из JavaScript, который многим ломает мозг: let i = 1 + '1'; // Переменная будет равна "11", число преобразуется в строку, строки объединят символы console.log(i - 1); // Будет выведено 10, строка преобразуется в число ====== JavaScript для клиентской части ====== ===== Подключение к HTML ===== Для того, чтобы код работал, можно воспользоваться 3 способами: вставить прямиком в HTML файл (используется редко, обычно для отладки), подключить внешний файл или воспользоваться консолью отладки в браузере (проверки функционала какой-то функции). ===== Консоль в браузере ===== Самый быстрый и легчайший вариант что-то проверить. Открывается на горячую клавишу '''' и находится во вкладке "Отладка". Здесь можно проверить правильность выполнения выражения или функции, вызвать свою функцию (если в загружаемой странице она присутствует) и многое другое. > :!: В данную консоль выводятся все ошибки выполнения кода и предупреждения. А еще туда можно выводить произвольные данные с помощью команды ''console.log(переменная_или_данные);'' ===== Встраивание в файл ===== Самый простой вариант - вставить в HTML файл. Тут все доволно просто: ... ... ... ... Плюсы такого подхода: FIXME А этот вид пути указывает расположение искомого файла относительно файла, с которого начинается поиск. Представим, дан каталог с таким содержимым (слеш в конце имени - указание, что это каталог): Я каталог/ | |_ index.html |_ otherPages/ | |_ about.html | |_ scripts/ | |_ serverResolver.js | |_ animations.js | |_ styles/ |_ style.css Пример 1: к ''index.html'' подключаем ''animations.js''. Файл ''index.html'' находится в основном каталоге проекта, т.е. начало берется отсюда. Нам нужно попасть в каталог ''scripts'' и взять оттуда файл ''animations''. Весь относительный путь от файла ''index.html'' до нужного нам выглядит так: ''scripts/animations.js''. Пример 2: к ''about.html'' подключаем ''style.css''. Файл ''about.html'' лежит в дочернем каталоге ''otherPages'', тут и начинается наш путь. Нам сначала требуется выйти из этого каталога (поднятся вверх) ''..'', теперь перейти в каталог ''styles'' и выбрать файл ''style.css''. Весь относительный путь от файла ''about.html'' до нужного: ''../styles/style.css''. ==== Когда применять абсолютный или относительный пути ==== Вопрос зависит от ситуации. Если в дальнейшем расположение папки проекта будет менятся (тем более много раз) - без относительного пути никак. //Если файлы вне проекта ссылались на файлы проекта, то после перемещения об этом главное не забыть//. Или если иерархия папок проекта огромна и нужные файлы находятся рядом и расположения не меняют - тут тоже не обойтись без относительных путей. Но бывают случаи, когда без абсолютного пути не обойтись. Самый простой - если мы внутри множества дочерних каталогов (допустим, ''/я/устал/это/писать/но/я/мазахист/файл.html'') и нужно содержимое файла в корне проекта (''/подключи_меня.css''). ====== Основы JavaScript ====== ===== Встроенные функции для легкого старта ===== * ''console.log(значение_или_переменная);'' -- выводит значения аргументов в консоль (для браузера: '''' - вкладка "Отладка"; для серверов на NodeJS: в терминал); * ''alert(сообщение);'' - выводит значения аргументов в отдельное окошко браузера ((только для браузеров)); * ''prompt(заголовок, значение_поля_по_умолчанию);'' -- выводит текст и добавляет поле для ввода пользователем данных ((только для браузеров)). Выводом служит значение в поле.