2013-04-17 27 views
33

sto ottenendo un errore davvero strano JavaScript quando si esegue questo codice:Errore di sintassi: return illegale in JavaScript

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

Nel JavaScript consolo che dice:

Syntax Error: Illegal return statement

si verifica a return true; e return false;

(sto echeggiando questo javascript da una funzione php, ilLa variabileè uno dei parametri php)

Cosa c'è di sbagliato nel mio codice?

+1

ritorno dichiarazioni sono ammessi solo all'interno delle funzioni. Cosa speri di ottenere con le dichiarazioni di ritorno nel tuo esempio? –

+10

Per le persone che cercano su Google questo problema, puoi anche ottenere questo errore se ti manca un '{' o '}'. – Gavin

risposta

59

return ha senso solo all'interno di una funzione. Non c'è alcuna funzione nel tuo codice.

Inoltre, il codice è degno se il Dipartimento di Dipartimento di Redenzione. Supponendo che si sposta in un corretto funzionamento, questo sarebbe meglio:

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

EDIT molto molto più tardi: il codice modificato per utilizzare json_encode per assicurare il contenuto del messaggio non si rompono solo a causa di un apostrofo nel messaggio.

+0

ah ... oops ... dato che stavo scrivendo questo all'interno di una funzione php stavo cercando di restituire i valori.grazie per il tuo aiuto :) – imulsion

+0

che non sarebbe stato migliore nel contesto del mio codice ... non posso nemmeno preoccuparmi di spiegare perché; è così incredibilmente complicato – imulsion

3

Se si desidera restituire un valore poi avvolgere la sua dichiarazione in funzione

function my_function(){ 

return my_thing; 
} 

Il problema è che con la dichiarazione sulla linea 1, se si sta tentando di utilizzare PHP

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

SE siete cercando di utilizzare PHP si dovrebbe usare

var ask = confirm (<?php echo "'".$message."'" ?>); //now message with be the javascript string!! 
0

in javascript istruzione return utilizzato solo all'interno blocco funzione. se si tenta di utilizzare istruzione return all'interno indipendente se il resto bloccarlo innescare errore di sintassi: return illegale in JavaScript

Qui è il mio codice di esempio per evitare tale errore:

<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> 

prega di controllare Jsfiddle esempio

0

dove stai cercando di restituire il valore? di consolare in strumenti di sviluppo è meglio per il debug

<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

Nella mia esperienza, il più delle volte questo messaggio di errore significa che avete messo una parentesi graffa di chiusura accidentale da qualche parte, lasciando il resto delle sue dichiarazioni al di fuori della funzione.

Esempio:

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 
} 
Problemi correlati