Использование =
в аргументах - это установка значения по умолчанию в случае отсутствия параметра ( Параметры по умолчанию ).Как только вы вызываете функцию с отсутствующим параметром (ами) или 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]));