Автор оригинала: Aaron Hanson.
Без ES6:
До ES6 разработчиков JavaScript пришлось сделать некоторую ручную явную кодировку для обработки аргументов недостающей функции. Например, функция с двумя аргументами, которые строго требуются, могут быть написаны так:
function foo (ham, eggs) { if (!ham) throw new Error("ham is a required argument"); if (!eggs) throw new Error("eggs is a required argument"); // Perform function logic }
С ES6:
Теперь, с появлением ES6, мы можем использовать значения аргументов по умолчанию, чтобы сделать это немного очистить и конденсироваться:
function foo (ham = isRequired("ham"), eggs = isRequired("eggs")) { // Perform function logic } function isRequired (argumentName) { throw new Error(`${argumentName} is a required argument.`); }
Поскольку выражения значения аргумента по умолчанию выполняются только при необходимости (то есть аргумент отсутствует или undefined
), мы можем использовать такой шаблон для абстрагирования необходимого аргумента. Супер чистый! Вот результат:
foo(); // Error: ham is a required argument. foo(undefined); // Error: ham is a required argument. foo(null); // Error: eggs is a required argument. foo(123, undefined); // Error: eggs is a required argument. foo(456, "hold the eggs"); // No errors!