Syntaxisfout: ongeldige retourinstructie in JavaScript

Ik krijg een heel rare JavaScript-fout wanneer ik deze code uitvoer:

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

In de JavaScript-console staat:

Syntax Error: Illegal return statement

Het komt voor bij return true;en return false;

(Ik herhaal dit javascript van een php-functie; de variabele $messageis een van de php-parameters)

Wat is er mis met mijn code?


Antwoord 1, autoriteit 100%

returnheeft alleen zin binnen een functie. Er is geen functie in uw code.

Uw code is ook waardig als de afdeling Redundantie. Ervan uitgaande dat u het naar een juiste functie verplaatst, zou dit beter zijn:

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

Veel later BEWERKEN: Code gewijzigd om json_encodete gebruiken om ervoor te zorgen dat de berichtinhoud niet breekt vanwege een apostrof in het bericht.


Antwoord 2, autoriteit 4%

Als je een waarde wilt teruggeven, stop dan je statement in functie

function my_function(){ 
 return my_thing; 
}

Probleem zit in het statement op de 1e regel als je PHP probeert te gebruiken

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

ALS je PHP probeert te gebruiken, moet je

. gebruiken

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

Antwoord 3

In JavaScript Return-instructie Alleen in Function Block gebruikt. Als u de retourverklaring binnen onafhankelijk probeert te gebruiken, indien anders blokkeren IT-triggersyntaxisfout: illegale retourverklaring in JavaScript

Hier is mijn voorbeeldcode om een ​​dergelijke fout te vermijden:

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

Controleer jsfiddle voorbeeld


Antwoord 4

Waar probeer je de waarde terug te sturen?
naar console in dev-gereedschappen is beter voor het debuggen van

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

Antwoord 5

In mijn ervaring betekent meestal dit foutbericht dat u ergens een toevallige sluitingsbeugel hebt geplaatst, de rest van uw uitspraken buiten de functie achterlaten.

Voorbeeld:

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
}

Antwoord 6

Dit kan gebeuren in ES6 als u de onjuiste (oudere) syntaxis gebruikt voor statische methoden:

export default class MyClass
{
    constructor()
    {
       ...
    }
    myMethod()
    {
       ...
    }
}
MyClass.someEnum = {Red: 0, Green: 1, Blue: 2}; //works
MyClass.anotherMethod() //or
MyClass.anotherMethod = function()
{
   return something; //doesn't work
}

Terwijl de juiste syntaxis is:

export default class MyClass
{
    constructor()
    {
       ...
    }
    myMethod()
    {
       ...
    }
    static anotherMethod()
    {
       return something; //works
    }
}
MyClass.someEnum = {Red: 0, Green: 1, Blue: 2}; //works

Antwoord 7

Ik ben alleen vergeten het woord ‘functie’ voor de functie aan te geven.
es

myFunc(num)
{
   if(num > 0)
      return;
}

dit levert een ‘illegale retourinstructie’-fout op, omdat ‘functie’ voor myFunc(num) ontbreekt

juiste vorm:

function myFunc(num)
{
    if(num > 0)
       return;
}

Other episodes