我有这个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");
答案 0 :(得分:5)
答案 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" }; }