javascript中的return语句出错

时间:2015-02-02 07:03:45

标签: javascript

我有这个javascript代码无效。

function myfun()
   {
       return
       {
       alert("para"); 
       } 
   };

   myfun();

我已经阅读了有关javascript的自动分号插入的信息。我将上面的代码更正为

return{
       alert("para"); 
       } 

但仍然出现错误:unexpected token (。 我想知道为什么?

注意:我不需要解决方案,但我需要解释为什么上面的代码无效。

修改

根据本书,javascript的好部分,如果返回值返回语句必须与返回表达式在同一行。

 return {
status: true
};

 return
{
status: true
};

错了。那怎么来

function myfun(para)
   {
     var status; 

       return
       {
          status : alert(para)
       };
   };


  myfun("ok");

不会产生任何错误。它不起作用,但也没有显示任何错误。当{与返回行位于同一行时,它可以正常工作。

 function myfun(para)
   {
     var status; 

       return{
          status : alert(para)
       };
   };

   myfun("ok");

3 个答案:

答案 0 :(得分:5)

return {
   alert("para"); 
} 

{...}被解释为object literal。对象文字的格式为

{
    key: value,
    //...
}

对象文字不能包含任意语句。

答案 1 :(得分:2)

您似乎遇到了ASI的困难以及运行时和解析时间之间的差异。

在哪里

return {
    status: true
};

是返回对象的正确方法,ASI将在以下代码中执行操作:

return
{ //  ^-- ASI will insert a semicolon here
    status: true
};

分号自动插入,运行时忽略return后的所有行。但是,在解析时,一切都很重要,如果出现语法错误,就像在第一个示例中一样,将会抛出错误。

答案 2 :(得分:0)

您收到该错误的原因是因为JS期望键“para”的值。

在JavaScript函数中没有强制返回。如果您打算测试控件是否转到该功能,您只需将其更改为

即可
function myfun() { alert("para"); }

如果要返回带有字符串“para”的对象,则应将其更改为

function myfun() { return { "text": "para" }; }