Параметры по умолчанию и явное undefined
Параметр по умолчанию получает запасное значение, если аргумент пропущен или явно равен undefined.
Назначение
Параметр по умолчанию получает запасное значение, если аргумент пропущен или явно равен undefined.
Как это работает
null, false, пустая строка и ноль не запускают это правило. Выражение значения по умолчанию вычисляется при соответствующем вызове, а не один раз при объявлении функции.
Пример
function label(value='пусто'){return value;}
console.assert(label()==='пусто');
console.assert(label(undefined)==='пусто');
console.assert(label(null)===null);
console.assert(label(0)===0);
function make(items=[]){return items;}
console.assert(make()!==make());
Что должно получиться
Запасная строка используется только в первых двух случаях. Массив создаётся заново при каждом подходящем вызове, поэтому вызовы не разделяют один изменяемый дефолт.
Граница применения и частая ошибка
Не рассчитывайте, что дефолт проверит тип или допустимость переданного значения. Если аргумент null неприемлем, функция должна явно обработать или отклонить его.
Самостоятельная проверка
Вызовите функцию без аргумента, с undefined, null и нулём. Затем задайте массив по умолчанию и убедитесь, что два вызова получают разные новые массивы.
JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.