Синтаксическая ошибка: незаконный оператор return в 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)

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

5 ответов


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

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

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

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


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

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

в JavaScript оператор return используется только внутри блока функции. если вы пытаетесь использовать оператор return внутри independent if else block, он запускает синтаксическую ошибку: незаконный оператор 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 пример


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

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

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

пример:

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
}