Операции [operators]

Операции — это те действия, которые мы выполняем над переменными и значениями. Например, операция сложения, умножения, присваивания или сравнения. Оператор - это та команда, с помощью которой мы выполняем операцию, например +, *, >, или =.

Для более детального рассмотрения и охвата операций, не рассмотренных здесь, см. the Mozilla Developer Network (MDN)’s “Выражения и операторы”.

Выражения [expressions]

Выражение - это фрагмент кода (некая комбинация значений, переменных, операций и функций), который, в ходе своего выполнения, приводит к вычислению и возврату некоторого значения (например, числа, строки или значения логического типа). Выражения могут быть сколь угодно длинными, но они всегда будут приводить к вычислению некоторого одного значения. Например, 2+3 — выражение, которое возвращает число 5. Вызов переменной также является выражением и возвращает значение, сохраненное в памяти под данным именем.

Например:

a = b * 2; //предполагается, что a и b, уже ранее были объявлены let a; let b=3;

Здесь 4 выражения:

  • 2 — это выражение литерального значения
  • b — это выражение переменной, которое тут означает извлечение его текущего значения
  • b * 2 — это арифметическое выражение, в данном случае выполнение умножения
  • a = b * 2 — это выражение присваивания, в данном случае это присвоит результат выражения b * 2 переменной a

Выражения может находится везде, где Javascript ожидает какое-то значение. Например, выражение может выступать в качестве параметра функции.

console.log(2 * 9 + 3); // 21

Параметр в console.log выше, это выражение, которое вычисляет и возвращает итоговое значение 21, а функция console.log отображает его в консоли.

Инструкции [statements]

Инструкция - это фрагмент кода, который выполняется какое-то определенное действие, другими словами является командой. Большинство инструкций в JavaScript заканчиваются точкой с запятой (;).

Программы — это всего лишь набор стольких инструкций, сколько нужно для того, чтобы описать все шаги, необходимые для выполнения цели вашей программы.

Например, вот некоторые конструкции в JavaScript, которые являются инструкциями:

  • Объявление переменных
  • Блок инструкций
  • if
  • if-else
  • while
  • for
  • switch
  • for-in

Для более детального рассмотрения и охвата операций, не рассмотренных здесь, см. the Mozilla Developer Network (MDN)’s “Инструкции”.

Если взять тот же пример из части выше, который мы разбили на выражения

 a = b * 2: //предполагается, что a и b, уже ранее были объявлены let a; let b=3;

То, если рассматривать его полностью, кроме выражения присваивания, это будет являться также инструкцией, которая предписывает, грубо говоря, взять текущее значение из переменной b, умножить это значение на 2, а затем сохранить результат в другую переменную, которую мы назвали a.

Еще пример:

if (a > 5) {
 9 + 9;
}

Здесь вызов переменной а , сравнение a > 5 и сложение 9 + 9 - это выражения, а вся строка целиком - это инструкция, которая устанавливает условие и вычисляет сумму чисел. Причем заметьте, эта инструкция не возвращает никакого значения. При выполненном условии, она вычислит выражение 9 + 9, но это значение нигде не сохранится и на состояние самой программы никак не повлияет.

В JavaScript инструкции не могут использоваться там, где ожидается значение. Поэтому они не могут использоваться в качестве аргументов функции, правой части присваиваний, в качестве операций или возвращаемых значений.

console.log(if(true){return 2});

> Uncaught SyntaxError: Unexpected token if

Передача в параметр функции инструкции if вызвало синтаксическую ошибку.

Примечание: Английское слово operator, соответствующее термину «операция», иногда ошибочно переводят как «оператор». На самом деле (по историческим причинам) русский термин «оператор» (когда подразумевает под собой какую-либо команду) обозначает то же, что и «инструкция», которой соответствует английское statement.

Функциональные выражения [function expression]

Ранее, в разделе изучения функций, говорилось, что функция является объектом, с которым можно манипулировать как с любым другим объектом, и определяется в коде так

function name(params) {
 // тело функции
}

Такое определение называется “объявлением функции” [function declaration] и является инструкцией, которая создаёт нужную нам функцию.

Но функция может представлять собой и выражение, которое еще называется “функциональным выражением”. Это происходит в случае, если мы используем ее там, где JavaScript ожидает какое-то значение.

Особенно часто в качестве выражения используются анонимные функции, например, мы можем присвоить её как значение переменной

let square = function(y) {
 return y * y;
};

Так как в этой конструкции анонимная функция присваивается переменной и присваивает ей значение, то эта функция является выражением. Далее, мы можем вызвать её как

square(3); // вернет 9

Выступать в роли функционального выражения может и именованная функция, например, нам нужно имя функции, чтобы вызывать её внутри самой себя (выполнить рекурсию)

let math = {
 calculateFactorial: function factorial(n) {
  if (n <= 1) return 1;
  return n * factorial(n - 1);
 }
};

Далее, этот метод мы сможем вызвать так:

math.calculateFactorial(3); //вернет 6

Такая именованная функция, которая выступает в качестве выражения, называется именованным функциональным выражением.

Еще одним примером функционального выражения является функция, которая исполняется сразу же после того, как она была определена (самовызывающиесе функциональное выражение)

let result = (function() {
 let title = "Возращенное значение";
 return title;
})();

//Значением переменной result немедленно становится результат вызова анонимной функции
result; // "Возращенное значение"

Сам синтаксис функционального выражения практически повторяет синтаксис объявления функции, только имя функции в функциональных выражениях может быть опущено для создания анонимных функций.

//синтаксис объявления функций (function statement)
function name([param] [, param] [..., param]) {
   //инструкции
}

//синтаксис объявления функций (function expression)
function [name]([param] [, param] [..., param]) {
   //инструкции
}

Главным отличием является то, что, когда мы используем функцию, пусть даже именованную там, где JavaScript ожидает какое-то значение выражения, такая функция, соответственно, называется функциональным выражением.

Обнаружили ошибку или хотите добавить что-то своё в документацию? Отредактируйте эту страницу на GitHub!

Оставить комментарий