2016-12-14 10 views
0

ヘルパー関数を定義しているJavaScriptコードの1文字列を書き、その値を返すコード(正確にはオブジェクト) でも、関数の定義ではなく戻り値をオブジェクトにする必要があります。つまり、関数を実行するだけです。 副作用として関数がグローバルスコープなどで定義されるかどうかは気にしません。関数を定義し、関数の結果に基づいて値を返す単一のjavascript行を書く

は、例えば私が試した次

var a = (function xyz() {return 10; }, { "b": xyz() })
この返します VM209:1キャッチされないにReferenceError:xyzは定義されていません(...)

私が使用している場合は、 ";"代わりに私は以下を取得します:

未知のSyntaxError:予期しないトークン。

私はChromeのコンソールで試しています。それが問題なら、教えてください。

+1

var a = {b:(()=> 10)()} – Gerrit0

+0

ありがとう@ Gerrit0この関数の定義を次のように使用したい場合はどうすればよいでしょうか?私のオブジェクトの複数の場所? – Oren

+0

次に、関数を最初に定義してから、関数をインスタンス化するときに関数を呼び出すことをお勧めします。したがって、var xyz =()=> 10; var a = {b:xyz()} – Gerrit0

答えて

0

あなたはそれがオブジェクト返すようにしたいように聞こえるあなたの説明から:あなたが何をしたいか

{ 
    "b":10 
} 

その場合には次のとおりです。あなただけの何をしたい場合は

var a = (function xyz() {return {"b":10};})() 

ですaが戻り値である必要があり、その後、何が欲しいのです:

var a = (function xyz() {return 10;})() 

いずれかの方法、構文は同じで、戻り値はちょうど変更されます。 ()

+0

あなたの最初の仮定は正しかった、私は{"b":10を得ることを考えています。 "var a =(function(){var xyz =()=> 10; return {a:xyz()}} }私は、コードブロックで可読性を持ち、関数ロジックをオブジェクト値の使用法から分離するようにしたい。たとえば、オブジェクトの複数の場所から使用できる日付差分ユーティリティ関数です。 – Oren

関連する問題