Операции, выражения и инструкции [operators, expressions and statements]
Операции [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 ожидает какое-то значение выражения, такая функция, соответственно, называется функциональным выражением.
Оставить комментарий