JavaScript方法返回多个值

时间:2015-09-01 01:36:57

标签: javascript return

所以我得到了这段代码:

function q(x, y, z) {
return  n = Math.floor(x+(x+y+z)/3),
        o = Math.floor(y+(x+y+z)/3),
        p = Math.floor(z+(x+y+z)/3),
        x -= n-(n+o+p)/6,
        y -= o-(n+o+p)/6,
        z -= p-(n+o+p)/6,
        n = n % 3232 + 3232,
        o = o % 3232 + 3232, 
        p = p % 3232 + 3232, 
        l = [ 1, 1, 0,    -1, 1, 0,     1,-1, 0,    
             -1,-1, 0,     1, 0, 1,    -1, 0, 1,
              1, 0,-1,    -1, 0,-1,     0, 1, 1]
}

很明显我遇到了很多问题,但是如果有人理解的话,请告诉我,它有什么样的外观,比如在Java中呢?

2 个答案:

答案 0 :(得分:2)

从MDN comma operator,说明逗号运算符的工作原理:

  

逗号运算符计算每个操作数(从左到右)并返回最后一个操作数的值。

assignment operators,说明"结果"表达式xyzzy = 42的内容被加载到xyzzy

  

为了将单个值分配给多个变量,可以链接赋值运算符。

因此只返回一个值,即您已分配给l的内容。

它与更常规的":

实际上相同
n = Math.floor(x+(x+y+z)/3);
o = Math.floor(y+(x+y+z)/3);
p = Math.floor(z+(x+y+z)/3);
:
l = [ 1, 1, 0,    -1, 1, 0,     1,-1, 0,    
     -1,-1, 0,     1, 0, 1,    -1, 0, 1,
      1, 0,-1,    -1, 0,-1,     0, 1, 1];
return l;

答案 1 :(得分:1)

你可以返回一个包含你所描述的参数的对象,只需用{}和changing = to:围绕它们,这样它就变成了:

function q(x, y, z) {
return  {n: Math.floor(x+(x+y+z)/3),
        o: Math.floor(y+(x+y+z)/3),
        p: Math.floor(z+(x+y+z)/3),
        ...}
}

要小心使用x,y,z,因为它们是你的函数输入参数。

如果您随后执行此功能并存储其值:

var result = q(1,2,3);

您可以通过以下方式获取每个值:

result.o;
result.p;
result.l;

您将创建一个包装器对象,其中包含您希望返回的每个变量。