Desestruturação de parâmetros de funções em JavaScript

A desestruturação tem outra área de aplicação muito importante - a passagem de parâmetros para funções. A essência é a seguinte: se uma função aceita um array como parâmetro, podemos definir diretamente na declaração da função como desestruturar esse array.

Vamos ver um exemplo. Suponha que temos uma função que aceita como parâmetro um array com ano, mês e dia:

javascriptfunc([2025, 12, 31]);

Vamos diretamente no parâmetro da função indicar em quais variáveis este array deve ser dividido:

javascriptfunction func([year, month, day]) {
  console.log(year);  // exibirá 2025
  console.log(month); // exibirá 12
  console.log(day);   // exibirá 31
}

A construção acima deve ser considerada como um parâmetro da função. Pode-se, se desejar, adicionar mais parâmetros:

javascriptfunc('str1', [2025, 12, 31], 'str2');

function func(param1, [year, month, day], param2) {
  console.log(param1); // exibirá 'str1'
  
  console.log(year);   // exibirá 2025
  console.log(month);  // exibirá 12
  console.log(day);    // exibirá 31
  
  console.log(param2); // exibirá 'str2'
}

E no próximo exemplo, o primeiro e o segundo parâmetro da função são arrays e nós desestruturamos ambos:

javascriptfunc([2025, 12, 31], [2026, 11, 30]);

function func([year1, month1, day1], [year2, month2, day2]) {
  console.log(year1);  // exibirá 2025
  console.log(month1); // exibirá 12
  console.log(day1);   // exibirá 31
  
  console.log(year2);  // exibirá 2026
  console.log(month2); // exibirá 11
  console.log(day2);   // exibirá 30
}
Задание 1

Reescreva o seguinte código usando desestruturação de acordo com a teoria estudada:

javascriptfunction func(employee) {
  let name       = employee[0];
  let surname    = employee[1];
  let department = employee[2];
  let position   = employee[3];
  let salary     = employee[4];
}

func( ['John', 'Smit', 'development', 'programmer', 2000] );
Задание 2

Reescreva o seguinte código usando desestruturação de acordo com a teoria estudada:

javascriptfunction func(employee) {
  let name     = employee[0];
  let surname  = employee[1];
  let info     = employee[2];
}

func( ['John', 'Smit', 'development', 'programmer', 2000] );
Задание 3

Reescreva o seguinte código usando desestruturação de acordo com a teoria estudada:

javascriptfunction func(employee) {
  let name       = employee[0];
  let surname    = employee[1];
  let department = employee[2];
  
  let position;
  if (arr[3] !== undefined) {
    position = arr[3];
  } else {
    position = 'júnior';
  }
}

func( ['John', 'Smit', 'development'] );
Задание 4

Reescreva o seguinte código usando desestruturação de acordo com a teoria estudada:

javascriptfunction func(department, employee, hired) {
  let name     = employee[0];
  let surname  = employee[1];
  
  let year  = hired[0];
  let month = hired[1];
  let day   = hired[2];
}

func( 'development', ['John', 'Smit'], [2018, 12, 31] );