Мне нужно создать функцию на JavaScript, где некоторые параметры будут необязательными. Я хочу, чтобы при отсутствии аргументов использовались значения по умолчанию.
В Ruby такую задачу можно решить так:
def read_file(file, delete_after = false)
# код
end
Это возможно сделать аналогично в JavaScript?
function read_file(file, delete_after = false) {
// Код
}
Будет ли это работать в современных версиях браузеров? Есть ли другие варианты для задания значений по умолчанию?
Можешь использовать деструктуризацию объектов для именованных параметров. Пример: function read_file({file, delete_after = false}) {} и вызов read_file({file: 'test.txt'}). Отлично работает когда параметров много или порядок неважен. Какой у тебя случай использования?
Да, твой ES6 синтаксис отлично работает в современных браузерах. Поддерживается везде кроме старого IE. Раньше писали delete_after = delete_after || false или проверяли typeof delete_after === 'undefined'. Сейчас твой вариант лучше - читается проще и корректно работает с null и 0.
Твой синтаксис отлично работает! Можешь ещё попробовать ?? оператор для точного контроля - delete_after = delete_after ?? false. Он срабатывает только на null или undefined, но пропускает 0 и пустые строки. Супер удобно когда надо различать эти случаи. Для старых браузеров babel всё равно транспилирует в обычные проверки.