【问题标题】:Syntax error: Illegal return statement in JavaScript语法错误:JavaScript 中的非法 return 语句
【发布时间】:2013-04-10 16:50:26
【问题描述】:

我在运行这段代码时遇到了一个非常奇怪的 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 参数之一)

我的代码有什么问题?

【问题讨论】:

  • 返回语句只允许在函数内部。您希望通过示例中的返回语句实现什么目标?
  • 对于搜索此问题的人,如果您缺少 {},也会收到此错误。
  • > return 语句结束函数执行并指定要返回给函数调用者的值。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

标签: javascript syntax-error


【解决方案1】:

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

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

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

稍后再编辑:将代码更改为使用 json_encode 以确保消息内容不会因为消息中的撇号而中断。

【讨论】:

  • 啊...哎呀...因为我在一个 php 函数中写这个我试图返回值。谢谢你的帮助:)
  • 在我的代码上下文中不会更好...我什至懒得解释原因;太复杂了
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      <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; //doesn't work
          }
          

          而正确的语法是:

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

          【讨论】:

            【解决方案7】:

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

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

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

            正确的形式:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-04-29
              • 1970-01-01
              • 2013-11-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-05-23
              相关资源
              最近更新 更多