76

运行此代码时,我遇到了一个非常奇怪的 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;

(我从 php 函数中呼应这个 javascript;$message变量是 php 参数之一)

我的代码有什么问题?

4

7 回答 7

119

return只有在函数内部才有意义。您的代码中没有函数。

另外,你的代码是值得的,如果系冗余系。假设您将其移动到适当的功能,这会更好:

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

很久以后编辑:更改了json_encode用于确保消息内容不会仅仅因为消息中的撇号而中断的代码。

于 2013-04-17T19:16:26.243 回答
4

如果你想返回一些值,那么将你的语句包装在函数中

function my_function(){ 

 return my_thing; 
}

如果您尝试使用 PHP,则问题在于第一行的语句

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

如果您尝试使用 PHP,您应该使用

 var ask = confirm (<?php echo "'".$message."'" ?>); //now message with be the javascript string!!
于 2013-04-17T19:18:19.063 回答
4

在 javascript return 语句中仅在功能块内使用。如果您尝试在独立的 if else 块中使用 return 语句,则会触发语法错误:JavaScript 中的非法 return 语句

这是我避免此类错误的示例代码:

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

于 2015-09-01T06:25:58.517 回答
1

你想在哪里返回值?在开发工具中进行控制台更适合调试

<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>
于 2017-04-02T18:42:54.683 回答
1

根据我的经验,此错误消息通常意味着您在某处放置了一个意外的右大括号,而将其余语句留在了函数之外。

例子:

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
}
于 2017-04-11T04:04:34.857 回答
0

只是我忘了在函数之前声明“函数”这个词。es

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

这会产生“非法返回语句”错误,因为在 myFunc(num) 之前错过了“函数”

正确的形式:

function myFunc(num)
{
    if(num > 0)
       return;
}
于 2021-08-04T16:53:09.913 回答
0

如果您对静态方法使用不正确的(旧)语法,这可能在 ES6 中发生:

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
}

而正确的语法是:

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

    myMethod()
    {
       ...
    }

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

MyClass.someEnum = {Red: 0, Green: 1, Blue: 2}; //works
于 2019-09-28T07:02:42.447 回答