这是与我的情况类似的示例代码:

var customProcessor = function test1(arga, argb, argc, argd) {
  console.log('customProcessor', 'arga', arga);
  console.log('customProcessor', 'argb', argb);
  console.log('customProcessor', 'argc', argc);
  console.log('customProcessor', 'argd', argd);
};

var utilityMethod = function test2(arga, argb, someFunc, cbArgs) {
  console.log('utilityMethod', 'arga', arga);
  console.log('utilityMethod', 'argb', argb);
  cbArgs.unshift(argb);
  cbArgs.unshift(arga);
  someFunc.apply(this, cbArgs); // INTENT: someFunc(arga, argb, argc, argd);
};

utilityMethod('argA', 'argB', customProcessor, ['argC','argD']);


上面的代码设法将所有4个必需参数传递给我的customProcessor方法,但是就意图而言,以下几行不是最易读的:

  cbArgs.unshift(argb);
  cbArgs.unshift(arga);
  someFunc.apply(this, cbArgs); // INTENT: someFunc(arga, argb, argc, argd);


是否有某种方式可以使用我可能不知道的JS语法以更不言自明的方式编写它们?

这是我想象中的更具可读性的内容:

  // not real code
  someFunc.apply(this, [arga, argb, cbArgs]);


但是我需要知道是否有一种现实的JS语法可以实现这一目标?

最佳答案

使用spread syntax

[arga, argb, ...cbArgs]

请注意,这也直接在函数调用上起作用,替换apply(如果不需要显式的this),例如someFunc(arga, argb, ...cbArgs)

关于javascript - 如何使用自己的元素和另一个数组的元素初始化JavaScript数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45766886/

10-12 04:11