如何在 js 的一行中从函数输出创建多个变量?

How to create multiple variables from function output in one line in js?

我需要创建 4 个变量,它们都带有一个随机合数。合数由函数创建。有没有更简单的方法来使用相同的函数而不是下面的脚本来创建 4 个变量?

var a = create_composite();
var b = create_composite();
var c = create_composite();
var d = create_composite();

我认为这是最简单的方法。你也可以这样做:

var a = create_composite(),
b = create_composite(),
c = create_composite(),
d = create_composite();

这取决于偏好,但在 JavaScript 中没有更简单的方法:)

如果您使用的是支持 ES6 的浏览器,或者正在使用 babel 或类似工具,您可以这样做:

var { a, b, c, d } = create_composite();

如果 create_composite return 是一个具有键 a、b、c、d 的对象,那么您将可以访问这些单独的变量。

否则,在旧版浏览器中,您仍然可以拥有 return 对象的功能,您只需单独调用属性即可:

var compositeNumber = create_composite();
console.log(compositeNumber.a);

这有点短,但不确定它是否是您想要的...

// stub function
const create_composite = () => Math.floor(Math.random() * 10)

const [a, b, c, d] = (new Array(4)).fill(0).map(create_composite)

console.log(a, b, c, d);

另一种选择是修改 create_composite 以接受您希望生成的合数的数量:

const create_composites = (qty=1) => {
   return (new Array(qty)).fill(0).map(() => {
      // original composite number function code
   });
}

然后你可以像我上面那样使用它:

const [a, b, c, d] = create_composites(4);

虽然我们正在考虑更改您的 create_composite 函数的建议,但我能想到的 最佳 选项是将该函数变成 generator

function* create_composite() {
   while(true)
     // yield your return value here
     yield Math.floor(Math.random() * 10);
}
    
const [a, b, c, d, e, f, g] = create_composite();
console.log(a, b, c, d, e, f, g);

这将允许您根据需要获取尽可能多的变量