2012-04-19 18 views
11

、複数の変数を返すために、私が行うことができます -JavaScript関数から複数の変数を返しますか? Pythonでは

def function_one(i): 
    return int(i), int(i) * 2 

value, duble_value = function_one(1) 

機能は、単一の戻り値を返す可能性がある場合どのように私はJavaScriptを使用してこの同じ結果を得るでしょうか? (配列を使用すると仮定します)

+1

技術的には、あなたはまだ単一の値であることにある2つのフィールドを持つ*タプル*を、帰国しています。私はJavascriptに慣れていませんが、使用できる配列や構造があれば理想的です。 – Makoto

+3

返す2つの整数が素数である場合、その製品を返すことができます。 :P –

+1

誠のコメントはとても良いです。 ** JavaScriptは 'tuple'型を持たないので、Object(例えば' dict')や配列(例えば 'list')を置換として使うことができます。また、JavaScriptはSequence-unpacking(Pythonでは 'x、y = tuple 'を可能にする)を持たないため、分解を長時間行う必要があります。 –

答えて

30

配列またはオブジェクトを使用する必要があります。例えば

function test() { 
    return {foo: "bar", baz: "bof"}; 
} 

function test2() { 
    return ["bar", "bof"]; 
} 

var data = test(); 
foo = data.foo; 
baz = data.baz; 

data = test2(); 
foo = data[0]; 
baz = data[1]; 
+0

もう1つのオプションです(niceではありません): 'function test(ret){ret.a = 42; ret.b = 43; } ' –

+1

@AtesGoral"非オブジェクト "型が渡されたときは動作しません(パラメータが与えられていない場合は厄介な例外になります)。また、私は少し吐きたいと思う。 –

+0

@pstこれは、誰かが意図的にオブジェクトを渡すことを前提としています。このメソッドは、特に複数のソースから同じプール(オブジェクト)に一連のパラメータを収集する場合に使用されます。 –

-1
function foo(){ 
    return ["something","something else","something more","something further"]; 
} 

let [a,b,c,d] = foo(); 
+1

このコードスニペットは、[説明を含む](http://meta.stackexchange。 com/questions/114762/explain-entire-code-based-answers)は本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 –

関連する問題