函数参数内的自动数组解构?

时间:2018-05-31 11:09:26

标签: javascript arrays destructuring

function getValues(param=[width, height]) {
   return `Width= ${width}, Height = ${height}`;
  }

上面的鳕鱼不起作用,因为"宽度"和"身高"未在函数体中定义

但是,下面的函数定义工作正常,我不太清楚为什么数组参数会自动解析为下面的元素,而在上面的例子中它并不是这样。

 function getValues([width, height]) {
   return `Width= ${width}, Height = ${height}`;
  }

我很感激在此澄清。谢谢。

3 个答案:

答案 0 :(得分:1)

在参数中使用undefined,基本上是在缺少参数(Default parameters)的情况下设置默认值。一旦,您调用缺少参数或[width, height]作为参数的函数,将根据参数设置默认值。在您的示例中,如果您传递任何参数,则将忽略默认值Uncaught ReferenceError,否则,width将被抛出,因为宽度和高度不存在(未提供全局或在功能范围)。

以下内容将为您提供宽度和高度值,因为第一个参数已分配给height,第二个参数分配给function getValues(width, height, param=[width, height]) { console.log(param); // [5,6] return `Width= ${width}, Height = ${height}`; } console.log(getValues(5,6));



width




  

但是,下面的函数定义工作正常,我不太清楚   为什么数组参数会自动解析为它   下面的元素虽然在上述情况下并非如此。

这符合Destructuring的规则。如果参数是数组,则可以根据索引将它们分配到不同的变量中。例如此处,数组中的第一个值将分配给height,第二个值将分配给function getValues([width, height]) { return `Width= ${width}, Height = ${height}`; } console.log(getValues([5, 6]));



xlOpenXMLWorkbookMacroEnabled




答案 1 :(得分:0)

  • 第一个函数将分配中的数组值添加到param函数参数
  • 第二个函数只有参数作为值。

你应该试试

function getValues(param=[width, height]) {
   return `Width= ${param[0]}, Height = ${param[1]}`;
  }

答案 2 :(得分:0)

这两个功能都很好。在第二个中,数组的第一个值分配给POSIXct变量,第二个值分配给函数范围中的MODELNAME | PC Score | Rated Score | Prod Score | Temp | Temp1 | Temp2 Machine1 | 1234 | 2345 | 9000 | NULL | NULL | NULL Machine1 | NULL | 2345 | 9000 | 2356 | 2135 | 9123 变量。记得使用数组调用该函数。

width