====== Оглавление ======
- [[.: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(заголовок, значение_поля_по_умолчанию);'' -- выводит текст и добавляет поле для ввода пользователем данных ((только для браузеров)). Выводом служит значение в поле.