Подтвердить что ты не робот

Возвращает ли возврат цикла?

Предположим, что у меня такой цикл:

for (var i = 0; i < SomeArrayOfObject.length; i++) {

  if (SomeArray[i].SomeValue === SomeCondition) {

     var SomeVar = SomeArray[i].SomeProperty;
     return SomeVar;
  }
}

Быстрый вопрос: останавливает ли return выполнение цикла внутри себя?

4b9b3361

Ответ 1

Да, return останавливает выполнение и выходит из функции. return всегда ** немедленно выходит из своей функции, без дальнейшего выполнения, если она внутри цикла for.

Это легко проверить для себя:

function returnMe() {
  for (var i=0; i<2; i++) {
    if (i === 1) return i;
  }
}

alert(returnMe());
// 1

** Примечания: см. Этот другой ответ о специальном случае try/catch/finally и этот ответ о том, что циклы forEach имеют свою собственную область действия функции, не выйдет из содержащей функции.

Ответ 2

В большинстве случаях (включая этот), return выйдет немедленно. Однако, если возврат находится в блоке try с сопровождающим блоком finally, finally всегда выполняется и может "переопределить" return в try.

function foo() {
    try {
        for (var i = 0; i < 10; i++) {
            if (i % 3 == 0) {
                return i; // This executes once
            }
        }
    } finally {
        return 42; // But this still executes
    }
}

console.log(foo()); // Prints 42

Ответ 3

Оператор return останавливает цикл, только если он внутри функции. В противном случае вы получите эту ошибку:

Uncaught SyntaxError: Illegal return statement(…)

Ответ 4

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

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

Ответ 5

Ответ - да, если вы пишете оператор return, элементы управления возвращаются к методу вызывающего абонента. За исключением блока finally, который запускается после инструкции return.

и, наконец, может также переопределить возвращаемое вами значение, если вы вернетесь в блок finally. LINK: Пояснение о попытке окончательного возврата

Определение отчета о возврате в соответствии с:

Java Docs:

оператор возврата может использоваться для ветки от блока потока управления и выйти из метода

Документация MSDN:

Оператор return завершает выполнение функции и возвращает управление вызывающей функции. Выполнение возобновляется в вызывающую функцию в точке сразу после вызова.

Википедия:

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

Ответ 6

"return" завершает работу, но если вы хотите вернуть большие суммы данных, вы можете сохранить его в массиве и затем вернуть его вместо того, чтобы пытаться возвращать каждую часть данных 1 на 1 в цикле.

Ответ 7

Этот код выйдет из цикла после первой итерации цикла for of:

const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
  if (iterator.name == 2) {
    return;
  }
  console.log(iterator.name);// 1
}

Приведенный ниже код будет прыгать на состоянии и продолжить на for of цикла:

const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];

for (const iterator of objc) {
  if (iterator.name == 2) {
    continue;
  }
  console.log(iterator.name); // 1  , 3
}

Ответ 8

как насчет return происходит в цикле map или цикла forEach? Я занимаюсь практикой алгоритма FreecodeCamp, похоже, что нет, поэтому я должен использовать метод цикла for. здесь ссылка https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-algorithm-scripting/finders-keepers

function findElement(arr, func) {
  let num = 0;
  // for(let i = 0; i < arr.length; i ++){
  //   num = arr[i];
  //   console.log(num)
  //   if(func(num)){
  //     console.log(num)
  //     return num;
  //   }
  // }
  arr.map(el => {
    // console.log(func(num));
    num = el;
    if(func(num)){
      //  console.log(num);
      return num;
    }
  })
  return undefined;
}
// console.log(num);

findElement([1, 2, 3, 4, 6], num => num % 2 === 0);