2013-04-17 34 views
33

Otrzymuję bardzo dziwny błąd JavaScript, kiedy uruchomić ten kod:Błąd składni: Nielegalna return w JavaScript

<script type = 'text/javascript'> 
var ask = confirm('".$message."'); 
if(ask==false) 
{ 
return false;  
} 
else 
{ 
return true; 
} 
</script> 

W JavaScripcie pocieszyć go, mówi:

Syntax Error: Illegal return statement

Występuje pod numerem return true; i return false;

(Jestem echem tego javascript z funkcji php,Zmiennajest jednym z parametrów php)

Co jest nie tak z moim kodem?

+1

powrotne instrukcje są dozwolone tylko wewnątrz funkcji. Co masz nadzieję osiągnąć dzięki zwrotom w swoim przykładzie? –

+10

Osoby, które szukają go w Google, mogą również uzyskać ten błąd, jeśli brakuje "' lub ''. – Gavin

Odpowiedz

59

return ma sens tylko wewnątrz funkcji. W twoim kodzie nie ma żadnej funkcji.

Twój kod jest również warty, jeśli Departament Oddziału Redundancji. Zakładając go przenieść do odpowiedniej funkcji, to byłoby lepiej:

return confirm(".json_encode($message)."); 

EDIT o wiele później: Kod Zmieniono używać json_encode aby zapewnić treść wiadomości nie tylko z powodu złamania apostrof w komunikacie.

+0

ah ... oops ... odkąd pisałem to wewnątrz funkcji php próbowałem zwrócić wartości.dziękuję za twoją pomoc :) – imulsion

+0

, które nie byłoby lepsze w kontekście mojego kodu ... nie mogę nawet być zaniepokojony, aby wyjaśnić, dlaczego; to jest tak niewiarygodnie skomplikowane – imulsion

3

Jeśli chcesz zwrócić jakąś wartość, a następnie owinąć swoje oświadczenie w funkcji

function my_function(){ 

return my_thing; 
} 

Problem jest z rachunku na 1 linię, jeśli próbujesz użyć PHP

var ask = confirm ('".$message."'); 

jeśli jesteś próbując użyć PHP, powinieneś używać

0

w zwrotnym oświadczeniu javascript używanym tylko wewnątrz blok funkcyjny. jeśli spróbujesz użyć instrukcji return wewnątrz niezależnie czy inny blok to wywołać błąd składni: Illegal instrukcji return w JavaScript

Oto mój przykładowy kod, aby uniknąć takiego błędu:

<script type = 'text/javascript'> 
(function(){ 
    var ss= 'no'; 
    if(getStatus(ss)){ 
     alert('Status return true'); 
    }else{ 
     alert('Status return false'); 
    } 

    function getStatus(ask){ 
     if(ask=='yes') 
     { 
     return true;  
     } 
     else 
     { 
     return false; 
     } 
    } 
})(); 
</script> 

Proszę sprawdzić Jsfiddle przykład

0

gdzie próbujesz zwrócić wartość? pocieszyć w dev narzędzi jest lepsze dla debugowania

<script type = 'text/javascript'> 
var ask = confirm('".$message."'); 
function answer(){ 
    if(ask==false){ 
    return false;  
    } else { 
    return true; 
    } 
} 
console.log("ask : ", ask); 
console.log("answer : ", answer()); 
</script> 
0

Z mojego doświadczenia wynika, najczęściej ten komunikat o błędzie oznacza, że ​​trzeba umieścić przypadkowego zamknięcia klamra gdzieś, pozostawiając resztę swojego sprawozdania poza funkcją.

przykład:

function a() { 
    if (global_block) //syntax error is actually here - missing opening brace 
     return; 
    } //this unintentionally ends the function 

    if (global_somethingelse) { 
     //Chrome will show the error occurring here, 
     //but actually the error is in the previous statement 
     return; 
    } 

    //do something 
}