Posiadanie następującego kodu:

function test(x) {
   if(x=='a') return false;
   return true;
}

if(y ==x) {
    return test('a');
    group['ids']= inputs.val();
    console.log(group);
}

Dlaczego return true po prostu przełamuje mój kod, nie trwają kontynuacji poza return?

Uwaga: Chcę odpowiedź return test() na kontrolę, jeśli powinien być kontynuowany z kodem, czy nie

Aktualizacja

Robię już coś w rodzaju:

var response = test('b');
if (response==false) return false;
... more code here ...

Ale chcę uniknąć konieczności tego zrobienia w każdym wywołaniu tej funkcji

0
Alex 13 sierpień 2012, 17:55

6 odpowiedzi

Najlepsza odpowiedź

Ponieważ jest to, co return robi w prawie każdy język programowania: to

  1. wychodzi z funkcji i
  2. zwraca wartość

Jeśli potrzebujesz innego kodu, który ma zostać wykonany, umieść go przed wyciągiem zwrotu.

Edytuj: widziałem twoją edycję, ale nie zmienia samej natury return w tym kontekście (i każdego) kontekstu. Będzie nadal zatrzymać przepływ bieżącego zakresu, wracając do najbliższego wyższego zakresu o wartości (w twoim przypadku, prawdziwe lub fałszywe).

3
Cranio 13 sierpień 2012, 14:02

Spróbuj umieścić wracanie na końcu, ponieważ zwrot prawda przełamuje wykonanie i nic nie będzie wykonywać

1
rahul 13 sierpień 2012, 13:58

Po wykonaniu wyciągu zwrotnego wykonanie kończy się bieżącej funkcji, a kontrola programu jest zwracana do kontekstu, który wywołał funkcję. Cokolwiek po wywołaniu zwrotu nie zostanie wykonane.

1
hvgotcodes 13 sierpień 2012, 13:58

Słowo kluczowe powrotu powoduje zakończenie funkcji ("powrót"), gdy tłumacz osiągnie słowo kluczowe i nie nadal nie przetwarza niczego po wyciągu zwrotu (w tej samej funkcji).

Możesz przepisać, co masz:

group['ids']= inputs.val();
console.log(group);
return true;
1
jForrest 13 sierpień 2012, 16:56

Zwykle dowiedziałem się, które scenariusze są zły / błędy i {x0}} z nich, a następnie kontynuuj do kodu, który jest poprawny.

function Testmcdooder (test) {
    if (test === false) {
        // just exit up here
        return false;            
    }

    // now all of this code will run only if we're fine
    group['ids']= inputs.val();
    console.log(group);
}
0
Mark Pieszak - Trilon.io 13 sierpień 2012, 13:59

Oświadczenie return istnieje z funkcji. Myślę, że wolisz czy oświadczenie {x1}}:

if (y == x) {
  if (test('a')) {
    group['ids']= inputs.val();
    console.log(group);
  }
}

Jeśli chcesz również zwrócić wartość po określeniu, jeśli inne stemplay powinny działać:

if (y == x) {
  if (test('a')) {
    group['ids']= inputs.val();
    console.log(group);
    return true;
  } else {
    return false;
  }
}

Alternatywnie:

if (y == x) {
  var cond = test('a');
  if (cond) {
    group['ids']= inputs.val();
    console.log(group);
  }
  return cond;
}
0
Guffa 13 sierpień 2012, 14:07