Операторы JavaScript — это блок кода, который выполняет какое-либо действие или задачу. По умолчанию интерпретатор JavaScript выполняет эти операторы один за другим в том порядке, в котором они написаны.

Давайте попробуем понять различные виды операторов в JS ниже.

1. Операторы выражений

Выражения с побочными эффектами считаются операторами-выражениями, такими как операторы присваивания, вызов функций, операторы увеличения и уменьшения, ++ и —, связанные с операторами присваивания и операторами удаления.

let greeting = “Hello “ + name; //assignment statement
counter ++; // increment operator which is changing a variable value
delete o.x; // deleting a property of an object O
cx = Math.cos(x);; // function invocation and assign the value to a variable

2. Составные и пустые операторы

Один оператор может содержать более одного вложенного оператора и считается составным оператором или блоком операторов в JS. Следующие строки действуют как один оператор

{ 
 x = Math.PI; 
 cx = Math.cos(x);
 console.log(“cos(π) = “ + cx);
}

Пустой оператор противоположен составному оператору: он позволяет не включать операторы там, где они ожидаются. вы можете использовать точку с запятой, чтобы вставить пустой оператор в вашу программу.

3. Условное заявление

Операторы, которые заставляют интерпретатор JS выполнять или пропускать другие операторы в зависимости от значения выражения, такого как операторы if и switch.

3.1 Оператор if
основной управляющий оператор, который позволяет JS принимать решения и выполнять операторы условно.

//syntax
If (expression) 
 Statement1
else 
 Statement 2

//example
if (n === 1) { //curly braces are optional in case of single statement
 console.log("You have 1 new message.");
} else {
 console.log(`You have ${n} new messages.`);
}

оценивается первое выражение. Если полученное значение истинно, выполняется оператор 1. Если выражение ложно, выполняется оператор 2.

3.2 Оператор Switch
Когда значение одного и того же выражения может использоваться для принятия решения между более чем двумя вариантами, для таких случаев JS предоставляет оператор switch.

//Syntax
switch(expression) {
 case label1: statement1; // if expression value === label1 execute statement1
 case label2: statement2; // if expression value === label2 execute statement2
 … 
 default: default_statement; // optional
}

//Example:
switch(n) {
  case 1:                        
   // Start here if n === 1.(sameness is determined by the === operator)
   // Execute code block #1.
   break;                         // stop here
  case 2:                         
    // Start here if n === 2
    // Execute code block #2.
   break;                         // Stop here
  case 3:                         
    // Start here if n === 3
    // Execute code block #3;
   break;                         // Stop here
  default:                        
    // If no case match the value of n
    // Execute code block #4.
}

Если метка default отсутствует, оператор switch полностью пропускает блок кода. Ключевое слово break заставляет интерпретатор перейти к концу оператора switch и продолжить работу с оператором, следующим за ним.

4. Оператор циклов

Операторы, которые повторно выполняют другие операторы, такие как while и for.

4.1 Цикл while
Интерпретатор сначала оценивает выражение. Если значение выражения ложно, то интерпретатор пропускает оператор, служащий телом цикла, и переходит к следующему оператору в программе. Если, с другой стороны, выражение истинно, интерпретатор выполняет оператор и повторяет его.

//Syntax
while (expression) { //curly braces are optional in case of single statement
  //statment or statement block
}

//Example
let count = 0;
while(count < 10) {
 console.log(count);
 count++;
}

4.2 Цикл do/while
Цикл do/while аналогичен циклу while, за исключением того, что выражение цикла проверяется в конце цикла, а не в его начале. вершина. Это означает, что тело цикла всегда выполняется хотя бы один раз.

//Syntax
do { //curly braces are optional in case of a single statement
 //statement / statement block
} 
while (expression);

//Example
let count = 0;
do {
 console.log(count);
 count++;
}
while (count < 10);

4.3 Для цикла
выражение initializer вычисляется один раз перед началом цикла. Выражение test оценивается перед каждой итерацией и определяет, выполняется ли тело цикла. Если тест дает истинное значение, выполняется инструкция, являющаяся телом цикла. Наконец, вычисляется выражение increment.

//syntax
for(initialize ; test ; increment) { //curly braces are optional in case of single statement
 //statement / statement block
}
//Example:
for(let count = 0; count < 10; count++) {
 console.log(count);
}

4.4 Цикл for/of
Цикл for/of работает с повторяемыми объектами. массивы, строки, наборы и карты — это итерируемые объекты в JS. Тело цикла выполняется один раз для каждого элемента итерируемого объекта. Перед каждым выполнением тела цикла очередной элемент массива присваивается переменной element.

//Syntax with example
let data = [1, 2, 3, 4, 5, 6, 7, 8, 9], sum = 0;
for(let element of data) {
 sum += element;
}

// for of with map
let m = new Map([[1, "one"]]);
for(let [key, value] of m) {
 key    // => 1
 value  // => "one"
}

4.5 Цикл for/in
Инструкция for/in перебирает перечисляемые имена свойств указанного объекта. Чтобы выполнить оператор for/in, интерпретатор JavaScript сначала вычисляет выражение объекта. Если он оценивается как null или undefined, интерпретатор пропускает цикл и переходит к следующему оператору. Теперь интерпретатор выполняет тело цикла один раз для каждого перечисляемого свойства объекта.

//syntax
for (variable in object) {
 //statement / statement block
}

//Example:
for(let p in o) { // Assign property names of o to variable p
 console.log(o[p]); // Print the value of each property
}

5. Заявление о прыжках

Операторы, которые заставляют интерпретатор перейти к другой части программы, например break, return и throw.

5.1 Пометка
Любая инструкция может быть помечена путем добавления перед ней идентификатора и двоеточия: это имя, которое вы можете использовать для ссылки на него в другом месте вашей программы.

//syntax
identifier: statement

//example
mainloop: while(token !== null) {
 // Code omitted…
 continue mainloop; // Jump to the next iteration of the named loop(mainloop)
 // More code omitted…
}

5.2 Break
Операция break, используемая отдельно, вызывает немедленный выход из самой внутренней охватывающей инструкции цикла или оператора switch.

5.3 Продолжение
При выполнении оператора continue текущая итерация окружающего цикла завершается и начинается следующая итерация.

//example
for(let i = 0; i < data.length; i++) {
 if (!data[i]) continue; // jump to the next iteration of the loop
 total += data[i];
}

5.4 Возврат
Инструкция return внутри функции указывает значение вызовов этой функции. Оператор return может появляться только в теле функции. Это синтаксическая ошибка, если он появляется где-либо еще.

//syntax
return expression;

//Example
function square(x) { return x*x; } // A function that has a return statement
square(2) // => 4

5.5 Yield
Инструкция yield очень похожа на инструкцию return, но используется только в функциях генератора ES6 для создания следующего значения в сгенерированной последовательности значений без фактического возврата.

// A generator function that yields a range of integers
function* range(from, to) {
  for(let i = from; i <= to; i++) {
    yield i;
  }
}

5.6 Throw
В JavaScript исключения генерируются всякий раз, когда возникает ошибка времени выполнения, а также всякий раз, когда программа явно выдает ошибку с помощью инструкции throw. Исключения перехватываются оператором try/catch/finally, который описан в следующем разделе.

try/catch/finally
Инструкция try/catch/finally — это механизм обработки исключений в JavaScript.

//syntax
try {
 //Normally, this code runs from the top of the block to the bottom
 //without problems. But it can sometimes throw an exception,
 //either directly or with a throw statement.
} catch(e) {
 // The statements in this block are executed if, and only if, the try
 // block throws an exception. These statements can use the local variable
 // e to refer to the Error object or other value that was thrown.
} finally {
 // This block contains statements that are always executed, regardless of
 // what happens in the try block. They are executed whether the try
 // block terminates:
}

//example
try {
  // Ask the user to enter a number
  let n = Number(prompt("Please enter a positive integer", ""));
  // Compute the factorial of the number, assuming the input is valid
  let f = factorial(n);
  // Display the result
  alert(n + "! = " + f);
} catch(e) {     // If the user's input was not valid, we end up here
  alert(e);  // Tell the user what the error is
}

Следующие шаги

Следующие несколько сообщений станут частью серии, посвященной основам и дополнительным темам JavaScript.

Нажмите здесь, если хотите изучить серию блогов с самого начала.

Если вам понравилась эта история, нажмите кнопку 👏 и поделитесь ею, чтобы другие тоже могли ее найти! Кроме того, не стесняйтесь оставлять комментарии ниже.

Groww Engineering публикует технические анекдоты, новейшие технологии и лучшие способы решения распространенных проблем программирования. Вы можете подписаться здесь, чтобы получать последние обновления.

Мы нанимаем. Посмотреть вакансии здесь.