Почему Babel преобразует аргументы по умолчанию таким образом? - PullRequest
0 голосов
/ 17 мая 2018

Babel переносит мои стандартные аргументы ES2015 на ES5, но, похоже, делает это очень многословно.Вот оригинальная функция:

function initStyles(skipScaling = false) {/*...*/}

И вот результат после переноса:

function initStyles() {
  var skipScaling = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
}

Если бы я (возможно, наивно) реализовал это, я бы сделал что-то вроде этого:

function initStyles(skipScaling) {
  if (skipScaling === undefined) skipScaling = false;
}

По какой причине Бабел так поступает?

1 Ответ

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

Параметры, имеющие инициализатор по умолчанию, не учитываются для функции арности..length вашей функции initStyles должно быть 0, и Бабель копирует это, используя arguments объект для инициализации var вместо использования именованногопараметр. * +1010 *

...