В этой главе кратко излагаются особенности JavaScript, которые мы уже изучили, уделяя особое внимание тонким моментам.
Операторы разделяются точкой с запятой:
Предупреждение('Привет'); предупреждение('Мир');Обычно разрыв строки также рассматривается как разделитель, так что это тоже будет работать:
предупреждение('Привет')
предупреждение('Мир')Это называется «автоматическая вставка точки с запятой». Иногда это не работает, например:
alert("После этого сообщения произойдет ошибка")
[1, 2].forEach(предупреждение)Большинство руководств по стилю кода согласны с тем, что после каждого оператора следует ставить точку с запятой.
Точки с запятой не требуются после блоков кода {...} и синтаксических конструкций с ними, таких как циклы:
функция е() {
// точка с запятой после объявления функции не требуется
}
для(;;) {
// точка с запятой после цикла не требуется
}…Но даже если мы можем где-то поставить «лишнюю» точку с запятой, это не ошибка. Это будет проигнорировано.
Подробнее в: Структура кода.
Чтобы полностью задействовать все возможности современного JavaScript, нам следует начинать скрипты с "use strict" .
'используйте строгий'; ...
Директива должна находиться в верхней части скрипта или в начале тела функции.
Без "use strict" все по-прежнему работает, но некоторые функции ведут себя по-старому, «совместимо». Обычно мы предпочитаем современное поведение.
Некоторые современные возможности языка (например, классы, которые мы будем изучать в будущем) неявно включают строгий режим.
Подробнее: Современный режим «use strict».
Может быть объявлено с использованием:
let
const (постоянная, не может быть изменена)
var (старый стиль, увидим позже)
Имя переменной может включать в себя:
Буквы и цифры, но первый символ может не быть цифрой.
Символы $ и _ являются обычными, наравне с буквами.
Нелатинские алфавиты и иероглифы также разрешены, но обычно не используются.
Переменные динамически типизируются. Они могут хранить любое значение:
пусть х = 5; х = «Джон»;
Существует 8 типов данных:
number как для чисел с плавающей запятой, так и для целых чисел,
bigint для целых чисел произвольной длины,
string для струн,
boolean для логических значений: true/false ,
null – тип с единственным значением null , что означает «пустой» или «не существует»,
undefined — тип с единственным значением undefined , означающим «не назначено»,
object и symbol — для сложных структур данных и уникальных идентификаторов мы их еще не изучили.
Оператор typeof возвращает тип значения, за двумя исключениями:
typeof null == "object" // ошибка в языке
typeof function(){} == "function" // функции обрабатываются особым образомПодробнее: Переменные и типы данных.
Мы используем браузер в качестве рабочей среды, поэтому основными функциями пользовательского интерфейса будут:
prompt(question, [default])
Задайте question и верните либо то, что ввел посетитель, либо null , если он нажал «Отменить».
confirm(question)
Задайте question и предложите выбрать между «ОК» и «Отмена». Выбор возвращается как true/false .
alert(message)
Вывести message .
Все эти функции модальные , они приостанавливают выполнение кода и не позволяют посетителю взаимодействовать со страницей, пока он не ответит.
Например:
let userName = Prompt("Ваше имя?", "Алиса");
let isTeaWanted = submit("Хотите чаю?");
alert("Посетитель: " + Имя пользователя); // Алиса
alert("Хотел чая: " + isTeaWanted); // истинныйПодробнее: Взаимодействие: оповещение, подсказка, подтверждение.
JavaScript поддерживает следующие операторы:
Арифметический
Обычный: * + - / , а также % для остатка и ** для степени числа.
Двоичный плюс + объединяет строки. И если какой-либо из операндов является строкой, другой тоже преобразуется в строку:
предупреждение('1' + 2); // '12', строка
предупреждение (1 + '2'); // '12', строкаЗадания
Есть простое присвоение: a = b и комбинированные вроде a *= 2 .
Побитовый
Побитовые операторы работают с 32-битными целыми числами на самом низком, битовом уровне: при необходимости смотрите документацию.
Условный
Единственный оператор с тремя параметрами: cond ? resultA : resultB . Если cond правдив, возвращает resultA , в противном случае resultB .
Логические операторы
Логическое И && и ИЛИ || выполнить оценку короткого замыкания, а затем вернуть значение, на котором она остановилась (не обязательно true / false ). Логичное НЕТ ! преобразует операнд в логический тип и возвращает обратное значение.
Нулевой оператор объединения
?? Оператор предоставляет возможность выбрать определенное значение из списка переменных. Результат a ?? b — это a , если только оно null/undefined , тогда b .
Сравнения
Проверка равенства == для значений разных типов преобразует их в числа (за исключением null и undefined , которые равны друг другу и ничему больше), поэтому они равны:
предупреждение (0 == ложь); // истинный оповещение (0 == ''); // истинный
Другие сравнения также преобразуются в числа.
Оператор строгого равенства === не выполняет преобразование: разные типы всегда означают для него разные значения.
Значения null и undefined особенные: они равны == друг другу и больше ничему не равны.
Сравнения большего/меньшего размера сравнивают строки посимвольно, другие типы преобразуются в числа.
Другие операторы
Есть несколько других, например оператор запятая.
Подробнее: Основные операторы, математика, сравнения, логические операторы, нулевой оператор слияния '??'.
Мы рассмотрели 3 типа циклов:
// 1
пока (условие) {
...
}
// 2
делать {
...
} Пока (условие);
// 3
for(пусть я = 0; я <10; я++) {
...
} Переменная, объявленная в цикле for(let...) видна только внутри цикла. Но мы также можем опустить let и повторно использовать существующую переменную.
Директивы break/continue позволяют выйти из всего цикла/текущей итерации. Используйте метки для разрыва вложенных циклов.
Подробности в: Циклы: while и for.
Позже мы изучим другие типы циклов для работы с объектами.
Конструкция «switch» может заменить несколько проверок if . Для сравнения используется === (строгое равенство).
Например:
let age = Prompt('Ваш возраст?', 18);
переключатель (возраст) {
случай 18:
Предупреждение("Не будет работать"); // результатом запроса является строка, а не число
перерыв;
случай «18»:
alert("Это работает!");
перерыв;
по умолчанию:
alert("Любое значение, отличное от приведенного выше");
}Подробности в: Оператор «switch».
Мы рассмотрели три способа создания функции в JavaScript:
Объявление функции: функция в основном потоке кода.
функция sum(a, b) {
пусть результат = a + b;
вернуть результат;
}Выражение функции: функция в контексте выражения.
пусть сумма = функция (а, б) {
пусть результат = a + b;
вернуть результат;
};Функции стрелок:
// выражение в правой части
пусть sum = (a, b) => a + b;
// или многострочный синтаксис с { ... }, необходимо вернуть сюда:
пусть sum = (a, b) => {
// ...
вернуть а + б;
}
// без аргументов
letsayHi = () => alert("Привет");
// с одним аргументом
пусть double = n => n * 2;Функции могут иметь локальные переменные: объявленные внутри тела или списка параметров. Такие переменные видны только внутри функции.
Параметры могут иметь значения по умолчанию: function sum(a = 1, b = 2) {...} .
Функции всегда что-то возвращают. Если оператора return нет, то результат undefined .
Подробности: см. Функции, Стрелочные функции, основы.
Это был краткий список возможностей JavaScript. На данный момент мы изучили только основы. Далее в руководстве вы найдете больше особенностей и расширенных функций JavaScript.