Подтвердить что ты не робот

Ошибка синтаксиса: неверный оператор возврата в JavaScript

Я получаю действительно странную ошибку JavaScript при запуске этого кода:

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

else
{
    return true;
}
</script>

В консоли JavaScript это говорит:

Syntax Error: Illegal return statement

Это происходит при return true; и return false;

(Я повторяю этот javascript из функции php; переменная $message является одним из параметров php)

Что не так с моим кодом?

4b9b3361

Ответ 1

return имеет смысл только внутри функции. В вашем коде нет функции.

Кроме того, ваш код достоин, если Департамент Департамента избыточности. Предполагая, что вы переместите его на правильную функцию, это будет лучше:

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

EDIT намного позже: Измененный код для использования json_encode для обеспечения того, чтобы содержимое сообщения не прерывалось только из-за апострофа в сообщении.

Ответ 2

Если вы хотите вернуть какое-то значение, сверните свой оператор в функцию

function my_function(){ 

 return my_thing; 
}

Проблема с оператором в 1-й строке, если вы пытаетесь использовать PHP

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

ЕСЛИ вы пытаетесь использовать PHP, вы должны использовать

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

Ответ 3

в операторе возврата javascript используется только внутри функционального блока. если вы попытаетесь использовать оператор return внутри независимого, если else блокируете его синтаксическую ошибку: недопустимый оператор return в JavaScript

Вот мой пример кода, чтобы избежать такой ошибки:

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

Пожалуйста, проверьте Jsfiddle пример

Ответ 4

где вы пытаетесь вернуть значение? для консоли в dev-инструментах лучше для отладки

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

Ответ 5

По моему опыту, чаще всего это сообщение об ошибке означает, что вы случайно приложили случайную замыкающую скобку, оставив остальные ваши высказывания вне функции.

Пример:

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
}

Ответ 6

Это может произойти в ES6, если вы используете неправильный (более старый) синтаксис для статических методов:

export default class MyClass
{
    constructor()
    {
       ...
    }

    myMethod()
    {
       ...
    }
}

MyClass.someEnum = {Red: 0, Green: 1, Blue: 2}; //works

MyClass.anotherMethod() //or
MyClass.anotherMethod = function()
{
   return something; //does not work
}

Тогда как правильный синтаксис:

export default class MyClass
{
    constructor()
    {
       ...
    }

    myMethod()
    {
       ...
    }

    static anotherMethod()
    {
       return something; //works
    }
}

MyClass.someEnum = {Red: 0, Green: 1, Blue: 2}; //works