2011-03-28 22 views
-3

他の質問にお答えしましたので、この機能は動作していません。どうしましたか?私の機能が機能しないのはなぜですか?

Weird JavaScript statement, what does it mean?

How to handle click event in javascript?

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

あなたは何をすべきですか? – canon

+1

私の機能からオブジェクトを返そうとしています。 –

+0

私はこの質問にフラグを立てたいと思っていますが、すでにいくつかの人が答えています。その関数に2つの構文エラーがあります。これらの両方を修正すると、期待どおりに動作します。 –

答えて

6

JavaScriptがセミコロンを自動的に追加する方法が原因で、関数が機能しません。

としてごreturn声明ではJavaScriptによって読み込まれている:あなたはreturnと同じ行に{を配置する必要があり

return; 
{ 
    obj: this; 
}; 

return{ 
    obj: this; 
}; 

また、オブジェクトが{name: value}する必要があります。

+0

私は試みましたが、まだ動作していません。私はあなたのものが正しいとは思わない。 –

+0

あなたはセミコロンについては正しいですが、 'obj = this'はオブジェクトコンストラクタ内では許されません。ブロック内でのみ。私は '='がコロンになる必要があると思う。 –

+0

@Stack Guru:これで動くはずです。 –

6

オブジェクトリテラルを作成するための構文は次のとおりです。また

{ foo: bar } 

ない

{ foo = bar } 

、中JavaScriptでは、新しい行で文を終了できます。 returnの後に改行を置くと、undefinedが返され、オブジェクトのリテラルコードには決して到達しません。 JSLintはこの種の問題を解決することができます。

5

セミコロン注入のためです。

この:よう

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

そしてない

return 
    { myProperty: "hello world" }; 

は、このように解析されたオブジェクトの値を返すために

<< return statement with return value expression >> 

、あなたのコードが見えるように持っていますこれは:

として { に同一線
return { 
    myProperty: "hello world" 
}; 

+0

しかし、私はそれを防ぐファイアウォールを持って、今何? –

+2

セミコロン挿入を意味すると思います。 –

+5

@Stack Guru、そのファイアウォールはどこから入手できますか? –

関連する問題