2012-04-19 4 views
11

, 여러 변수를 반환하는, 내가 할 수있는 -JavaScript 함수에서 여러 변수를 반환 하시겠습니까? 파이썬에서

나는 기능을 단 하나의 반환 값을 반환 할 경우 자바 스크립트를 사용하여이 같은 결과를 얻을 것이다 어떻게
def function_one(i): 
    return int(i), int(i) * 2 

value, duble_value = function_one(1) 

? 배열을 사용한다고 가정합니다.

+1

기술적으로는 여전히 하나의 값이 두 필드와 * 튜플 *를 반환하고 있습니다. Javascript에 익숙하지 않지만 사용할 수있는 배열이나 구조가 있다면 이상적입니다. – Makoto

+3

반환 할 두 개의 정수가 소수 인 경우 제품을 반환 할 수 있습니다. : P –

+1

마코토의 코멘트는 아주 좋은 것입니다. ** Python은 * 하나의 값만 반환 할 수 있습니다. ** JavaScript에는 '튜플'유형이 없으므로 Objects (예 :'dict') 또는 Arrays (예 :'list')를 대체 문자열로 사용할 수 있습니다. 또한 JavaScript는 Sequence-unpacking (파이썬에서'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

또 다른 옵션 (그러나 좋지는 않음) :'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)은 게시물의 품질을 향상시키는 데 정말로 도움이됩니다. 앞으로 독자의 질문에 답하고 있으며 코드 제안의 이유를 알지 못할 수도 있습니다. –

관련 문제