2012-04-19 118 views
11

在蟒蛇,返回多个变量,我可以做 -从JavaScript函数返回多个变量?

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

value, duble_value = function_one(1) 

我将如何实现使用javascript如果函数只能返回一个返回值此相同的结果? (我假设使用数组?)

+1

技术上你返回一个元组* *在这两个领域,这仍然是一个单一的值。我不熟悉Javascript,但是如果有某种可以使用的数组或结构,那就很理想。 – Makoto 2012-04-19 03:58:06

+3

如果你要返回的两个整数是素数,你可以返回他们的产品。 :P – 2012-04-19 03:59:00

+1

真琴的评论是一个非常好的评论。 ** Python只能返回一个值* JavaScript没有'tuple'类型,因此可以使用Objects(例如'dict')或Arrays(例如'list')作为替换。另外,JavaScript没有序列解包(这使得Python中的'x,y = tuple'成为可能),因此分解必须长期完成。 – 2012-04-19 04:02:07

回答

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

另一个选择(但不是很好):'功能测试(ret){ret.a = 42; ret.b = 43; }' – 2012-04-19 04:00:07

+1

@AtesGoral当传入“非对象”类型时不起作用(并且如果没有提供参数,将会是一个讨厌的异常)。这也让我想吐一点。 – 2012-04-19 04:04:29

+0

@pst这假设有人故意传入一个对象。此方法有其用处,尤其是当您将一组参数从多个来源收集到相同的池(对象)时。 – 2012-04-19 04:13:49

-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-completely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – 2017-08-04 23:03:01