Javascript 为什么我的功能不起作用?

Javascript 为什么我的功能不起作用?,javascript,Javascript,现在我已经回答了其他问题,这个函数不起作用。怎么了 创建对象文字的语法为: { foo: bar } 不是 此外,在JavaScript中,新行可以终止语句。通过在返回后放置新行,您将返回未定义,并且永远不会到达对象文字代码。您可能会发现这种类型的问题。这是因为分号注入 这: 解析如下: << return statement >> << pointless object literal expression >> return { m

现在我已经回答了其他问题,这个函数不起作用。怎么了


创建对象文字的语法为:

{ foo: bar }
不是


此外,在JavaScript中,新行可以终止语句。通过在
返回
后放置新行,您将返回
未定义
,并且永远不会到达对象文字代码。您可能会发现这种类型的问题。

这是因为分号注入

这:

解析如下:

<< return statement >>
<< pointless object literal expression >>
return {
  myProperty: "hello world"
};

{
return
位于同一行时,由于JavaScript自动添加分号,您的函数无法工作

JavaScript将您的
return
语句读取为:

return;
{
    obj: this;
};
您需要将
{
放在与
return
相同的行上:

return{
    obj: this;
};

另外,对象必须是
{name:value}

,但我有一个防火墙来防止这种情况,现在怎么办?我想你是说分号插入。@堆栈专家,我从哪里可以得到防火墙?@Mike Samuel--谢谢!!我正在尝试快速键入:-)@Marcel Korpel我最初键入的是“新行注入”:-)我试过了,但仍然不起作用。我认为你的东西不对。你关于分号的看法是对的,但是对象构造函数中不允许使用
obj=this
。只允许在块中使用。我认为
=
需要变成冒号。@Mike:是的,我解决了这个问题……我需要更多的咖啡。试图从我的函数返回一个对象。我很抱歉MPT试图将此问题标记为关闭,但有几个人已经回答了。该函数中有两个语法错误。修复这两个错误,它将按预期工作。
<< return statement with return value expression >>
return {
  myProperty: "hello world"
};
return;
{
    obj: this;
};
return{
    obj: this;
};