Автоматическая деструкция массива в параметре функции? - PullRequest
0 голосов
/ 31 мая 2018
function getValues(param=[width, height]) {
   return `Width= ${width}, Height = ${height}`;
  }

Код выше не работает, потому что "ширина" и "высота" не определены в теле функции

Но приведенное ниже определение функции работает нормально, и я не совсем понимаю, почемуПараметры массива автоматически распределяются по его элементам ниже, а в вышеприведенном случае этого не происходит.

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

Буду признателен за любые разъяснения здесь.Спасибо.

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Обе функции в порядке.Во втором случае первое значение массива присваивается переменной width, а второе - переменной height в области действия функции.Не забудьте вызвать функцию, используя массив.

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

getValues([100,200]); // 'Width= 100, Height = 200'
0 голосов
/ 31 мая 2018

Использование = в аргументах - это установка значения по умолчанию в случае отсутствия параметра ( Параметры по умолчанию ).Как только вы вызываете функцию с отсутствующим параметром (ами) или undefined в качестве параметра, значение по умолчанию устанавливается для аргумента.В вашем примере, если вы передадите какой-либо аргумент, значение по умолчанию [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, а второе значение будет присвоено height.

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

console.log(getValues([5, 6]));
0 голосов
/ 31 мая 2018
  • первая функция имеет значения массива в , назначенные параметру функции param
  • Вторая функция имеет только параметр в качестве значений.

Вы должны попробовать

function getValues(param=[width, height]) {
   return `Width= ${param[0]}, Height = ${param[1]}`;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...