web-dev-qa-db-fra.com

Erreur de syntaxe: instruction de retour illégale en JavaScript

Je reçois une erreur JavaScript vraiment étrange lorsque je lance ce code:

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

else
{
    return true;
}
</script>

Dans la console JavaScript, il est écrit:

Syntax Error: Illegal return statement

Il se produit à return true; et return false;

(Je répète ce javascript à partir d'une fonction php; le $message variable est l’un des paramètres php)

Quel est le problème avec mon code?

52
imulsion

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 du Département des redondances. En supposant que vous le déplaciez pour une fonction appropriée, ce serait mieux:

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

EDIT beaucoup plus tard: Code modifié pour utiliser json_encode pour s'assurer que le contenu du message ne se casse pas uniquement à cause d'une apostrophe dans le message.

82

Si vous voulez retourner une valeur, placez votre déclaration dans la fonction

function my_function(){ 

 return my_thing; 
}

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

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

SI vous essayez d’utiliser PHP vous devriez utiliser

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

dans l'instruction de retour javascript utilisée uniquement dans le bloc de fonction. Si vous essayez d'utiliser l'instruction return dans Independent, sinon, bloquez-le. Erreur de syntaxe: instruction retour illégale en JavaScript.

Voici mon exemple de code 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
Sunny S.M

où essayez-vous de retourner la valeur? console en dev outils est mieux 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

D'après mon expérience, le plus souvent, ce message d'erreur signifie que vous avez mis une accolade de fermeture accidentelle quelque part, 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
}
0
K48