2011-03-28 183 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

相關問題