В этой главе кратко излагаются особенности 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.