Выражения и инструкции
Инструкции
Инструкция – это команда компьютеру для выполнения какого-то конкретного действия. Например:
// Создать переменную x и присвоить ей число 1
let x = 1;
// Вывести значение переменной x на экран
alert(x);
Любая программа представляет собой последовательность инструкций. Инструкции обычно состоят из слов, чисел и операторов, которые в совокупности выполняют конкретную задачу. Большинство инструкций должны заканчиваться точкой с запятой
.;
Точка с запятой
Точка с запятой применяется для отделения инструкций друг от друга. В большинстве случаев можно опускать точку с запятой между двумя инструкциями, если они находятся на разных строках:
первая инструкция
вторая инструкция
В таких ситуациях точки с запятой автоматически вставляются интерпретатором JavaScript с помощью встроенного механизма, который называется автоматическая вставка точки с запятой.
Точку с запятой также можно опускать в конце программного кода или перед закрывающей фигурной скобкой
.}
Если инструкции находятся на одной строке, их надо обязательно разделять с помощью точки с запятой, тем самым сообщая интерпретатору, где заканчивается одна инструкция и начинается другая:
первая инструкция; вторая инструкция;
Интерпретатор JavaScript не всегда трактует перенос строки как точку с запятой. Например:
alert(2 +
2);
Интерпретатор JavaScript трактует перенос строки как точку с запятой, если следующий непробельный символ не может быть интерпретирован как продолжение текущей инструкции. В данном случае следующий непробельный символ после конца строки может быть интерпретирован как продолжение текущей инструкции, поэтому интерпретатор не трактует перенос строки как точку с запятой.
Если инструкция начинается с (, [, /, + или -, то есть вероятность, что она может интерпретироваться как продолжение предыдущей инструкции. В качестве примера рассмотрим следующий код:
let b = 1 + a
(2 + 2).toString()
Интерпретатор трактует этот код следующим образом:
let b = 1 + a(2 + 2).toString();
Круглые скобки во второй строке интерпретируются как вызов функции a из первой строки. В данном случае, для работы кода как двух отдельных инструкций требуется явное указание точки с запятой.
Хорошей практикой является использование точки с запятой всегда, даже если инструкции расположены на разных строках.
Есть три исключения, когда синтаксический разбор второй строки как продолжения инструкции в первой строке невозможен. Первое исключение касается инструкций return, throw, yield, break и continue. Если перенос строки находится после любого из этих слов, то интерпретатор всегда будет воспринимать данный разрыв строки как точку с запятой. Например, если написано:
return
2
то интерпретатор будет предполагать, что подразумевается:
return; 2;
Второе исключение связано с операторами ++ и --. Эти операторы могут быть префиксными (расположенными перед выражением), или постфиксными (расположенными после выражения). Если нужно использовать их как постфиксные, тогда они должны находиться в той же строке, что и выражение, к которому они применяются.
Третье исключение связано со стрелочными функциями: сама стрелка => должна располагаться в той же строке, где находится список параметров.
Блок
Блок (также говорят блок кода, блок инструкций, составная инструкция) — это набор из нуля или более идущих подряд инструкций, заключённый в фигурные скобки. В отличие от обычных инструкций блок завершать точкой с запятой не нужно:
{
первая инструкция;
вторая инструкция;
третья инструкция;
}
Блоки позволяют использовать множество отдельных инструкций там, где допускается использовать только одну единственную инструкцию, например, в управляющих инструкциях вроде if.
Область внутри блока называют телом этого блока.
Пустая инструкция
Пустая инструкция позволяет не вставлять инструкции там, где они синтаксически необходимы. Пустая инструкция представляет собой просто точку с запятой:
;
К примеру, пустая инструкция может оказаться полезной, когда требуется создать цикл с пустым телом:
let a = [];
for (let i = 0; i < 10; a[i] = i++);
В этом цикле вся работа выполняется выражением a[i] = i++, и тело цикла здесь не требуется. Однако синтаксис JavaScript требует, чтобы цикл имел тело, поэтому здесь использована пустая инструкция.
Выражения
Выражение — это фрагмент кода, результатом выполнения которого является некоторое значение.
Выражения делятся на простые (также называют первичными) и сложные. Простые выражения являются самостоятельными выражениями, они не включают в себя ещё более простых выражений. К простым выражениям относятся: ключевое слово this,
идентификаторы и литералы. Сложные выражения состоят из простых выражений. Сложные выражения строятся из простых с помощью операторов:
// Простые выражения:
11 // Числовой литерал
str // Возвращает значение переменной
[] // Литерал массива
// Сложные выражения:
alpha + 19 // Возвращает результат сложения
foo() // Возвращает результат вызова функции
mass[1] // Возвращает значение элемента массива
Выражения являются частью инструкции:
// Значение выражения присваивается переменной
let x = 2 + 2;
В конце выражения можно поставить точку с запятой, в этом случае оно будет считаться инструкцией, но пользы от такой инструкции никакой нет, так как она никак не изменяет состояние программы:
37 - 2;
Компьютерные программы хранят данные в переменных, представляющих собой по факту области хранения данных в памяти компьютера, содержание этих областей памяти в любой момент времени исполнения программы называется состоянием программы.