2011-03-28 181 views
-3

现在我有我的其他问题的答案,此功能无法正常工作。怎么了?为什么我的功能不工作?

Weird JavaScript statement, what does it mean?

How to handle click event in javascript?

function myFunc() { 
    return 
    { 
     obj = this; 
    }; 
} 
+0

你在做什么? – canon 2011-03-28 18:41:58

+1

尝试从我的函数返回一个对象。 – 2011-03-28 18:44:44

+0

我很想试图解决这个问题,但有几个人已经回答了。该函数中有两个语法错误。解决这两个问题,它会按预期工作。 – 2011-03-28 18:48:38

回答

6

由于JavaScript自动添加分号,您的功能无法正常工作。

return声明是由JavaScript的解读为:

return; 
{ 
    obj: this; 
}; 

你需要把{在同一行return

return{ 
    obj: this; 
}; 

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

+0

我试过,但它仍然没有工作。我不认为你的东西是对的。 – 2011-03-28 18:43:56

+0

你说得对分号,但'OBJ = this'是不允许的对象构造函数中。只在一个街区。我认为,'='需要成为一个冒号。 – 2011-03-28 18:44:49

+0

@Stack大师:应该现在的工作。 – 2011-03-28 18:45:07

6

的语法来创建一个对象文字是:

{ foo: bar } 

{ foo = bar } 

另外,在JavaScript新行可以终止一条语句。通过在return之后放置新行,您将返回undefined,并且永远不会达到对象文字代码。 JSLint可以解决这类问题。

5

这是因为分号注射。

此:

return 
    { myProperty: "hello world" }; 

被解析如下:

<< return statement >> 
<< pointless object literal expression >> 

而且为:

<< return statement with return value expression >> 

返回一个对象值,您的代码看起来像这个:

return { 
    myProperty: "hello world" 
}; 

{在同一行作为return

+0

但是我有一个防火墙来防止这个,现在呢? – 2011-03-28 18:42:55

+2

我想你的意思是分号插入。 – 2011-03-28 18:43:26

+5

@Stack Guru,我可以从哪里获得防火墙? – 2011-03-28 18:43:34

相关问题