2013-04-17 6 views
33

Je reçois une erreur JavaScript vraiment bizarre quand je lance ce code:Erreur de syntaxe: instruction return illégale en JavaScript

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

Dans la console JavaScript il est dit:

Syntax Error: Illegal return statement

Il se produit à return true; et return false;

(Je suis en écho ce javascript d'une fonction de php; le $message variable est l'un des paramètres php)

Quel est le problème avec mon code?

+1

retour déclarations ne sont autorisés à l'intérieur des fonctions. Qu'espérez-vous réaliser avec les déclarations de retour dans votre exemple? –

+10

Pour les personnes recherchant ce problème, vous pouvez également obtenir cette erreur s'il vous manque un '{' ou '}'. – Gavin

Répondre

59

return n'a de sens que dans une fonction. Il n'y a pas de fonction dans votre code.

En outre, votre code est digne si le Département du Département de Redondance. En supposant que vous déplacez à une fonction appropriée, ce serait mieux:

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

EDIT beaucoup beaucoup plus tard: le code modifié pour utiliser json_encode pour assurer le contenu du message ne se cassent pas seulement à cause d'une apostrophe dans le message.

+0

ah ... oups ... puisque j'écrivais ceci dans une fonction php j'essayais de retourner des valeurs.merci pour votre aide :) – imulsion

+0

ce ne serait pas mieux dans le contexte de mon code ... je ne peux même pas être dérangé pour expliquer pourquoi; c'est tellement incroyablement compliqué – imulsion

3

Si vous voulez retourner une valeur puis enveloppez votre déclaration dans la fonction

function my_function(){ 

return my_thing; 
} 

problème est avec la déclaration sur la 1ère ligne si vous essayez d'utiliser PHP

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

Si vous êtes en essayant d'utiliser PHP, vous devez utiliser

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

en javascript déclaration de retour seulement utilisé à l'intérieur bloc de fonction. si vous essayez d'utiliser la déclaration de retour à l'intérieur indépendant si le bloc sinon il déclenche une erreur de syntaxe: instruction return illégale en JavaScript

Voici mon code exemple pour éviter une telle erreur:

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

S'il vous plaît vérifier Jsfiddle exemple

0

où essayez-vous de renvoyer la valeur? à la console dans les outils de dev est meilleur pour le débogage

<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

Dans mon expérience, le plus souvent ce message d'erreur signifie que vous avez mis une accolade de fermeture accidentelle quelque part, en laissant le reste de vos déclarations en dehors de la fonction.

Exemple:

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 
}