Javascript:从不同函数返回多个值

Javascript:从不同函数返回多个值,javascript,Javascript,我试图从不同的函数返回多个值。 起点是二维数组。代码的一个示例是: var items = [[0,1],[1,2],[0,2]]; var a; var b; function first() { a = items[Math.floor(Math.random() * items.length)]; return a; } function second() { b = a[Math.floor(Math.random() * 2)]; return b; } function thi

我试图从不同的函数返回多个值。 起点是二维数组。代码的一个示例是:

var items = [[0,1],[1,2],[0,2]];
var a;
var b;

function first() {
a = items[Math.floor(Math.random() * items.length)];
return a;
}

function second() {
b = a[Math.floor(Math.random() * 2)];
return b;
}

function third (){
  first();
  second();
}

third();
如果我在函数之外编写代码,一切都会正常工作。当我使用函数并将return替换为console.log时,它就工作了。如果我使用函数并返回(如上面报告的代码中所述),它将给出未定义的结果。我没有找到解决办法。为什么代码不起作用


提前感谢

如果您希望第三方返回值,请在其中添加一个返回值

function third (){
  var a = [];
  a.push(first())
  a.push(second())
  return a;
}

也许你想要像这样的东西

function third (){
  return {a: first(), b: second()};
}
然后

或者如果您正在运行ES6

var {a,b} = third()
console.log(a, b)

有关详细信息,请参见分解赋值,如果在函数外部(如代码中)声明变量a和b,则无需返回值。a和b将被定义。 但如果不在外部声明,则将返回值存储在数组变量中

var items = [[0,1],[1,2],[0,2]];

function first() {
a = items[Math.floor(Math.random() * items.length)];
return a;
}

function second() {
b = a[Math.floor(Math.random() * 2)];
return b;
}

function third (){
var a = first();
var b = second();
var arr  = [];
arr.push(a);
arr.push(b);
return arr 
}

var t = third();
console.log(t[0], t[1]);

什么让你不确定?您希望
third()
做什么?
a
b
都是在执行
third()
后定义的。您的函数返回的值是正确的,但您没有对这些值执行任何操作。你想对这些值做什么?如果你想
third
返回一些东西,那么你需要在
third
中写一个
return
语句
var third=.\u=>[first(),second()]可能是一个开始。
var items = [[0,1],[1,2],[0,2]];

function first() {
a = items[Math.floor(Math.random() * items.length)];
return a;
}

function second() {
b = a[Math.floor(Math.random() * 2)];
return b;
}

function third (){
var a = first();
var b = second();
var arr  = [];
arr.push(a);
arr.push(b);
return arr 
}

var t = third();
console.log(t[0], t[1]);