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 $message
is een van de php-parameters)
Wat is er mis met mijn code?
Antwoord 1, autoriteit 100%
return
heeft 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_encode
te 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;
}