Описание тега optional-parameters

Необязательный параметр - это параметр, который вызывающий абонент может включить в вызов функции или метода, но не обязан. Если опущено, вместо него используется значение по умолчанию. Необязательные параметры полезны, когда в большинстве случаев используется значение по умолчанию, но иногда их все же необходимо указывать.

Для нормальной функции или метода вызывающий должен предоставить количество аргументов, указанное в сигнатуре подпрограммы. Однако, когда функция или метод объявляются с необязательными параметрами, это означает, что вызывающий объект может опустить одно или несколько значений аргументов. Если вызывающий предоставляет значение для необязательного параметра, значение присваивается переменной параметра как обычно. Но если вызывающий опускает значение для соответствующей позиции аргумента, вместо этого для параметра просто устанавливается значение по умолчанию.

Необязательные параметры полезны в ситуациях, когда ожидается, что большинство вызовов функции будет использовать одно и то же значение для этого аргумента. Вместо того, чтобы заставлять типичных вызывающих абонентов включать одно и то же значение в каждый вызов, параметр можно сделать необязательным, так что вызывающие абоненты, желающие использовать значение по умолчанию, могут просто опустить аргумент из вызова. В то же время в тех немногих случаях, когда требуется другое значение, его все же можно указать, просто добавив дополнительный аргумент.

На большинстве языков необязательные параметры должны стоять после обязательных. При вызове функции или метода пропущенные параметры находятся в конце списка аргументов. Это предотвращает интерпретацию последующих аргументов как значение пропущенного необязательного параметра.

Именованные параметры - еще один способ решить эту проблему, поскольку они явно указывают, какому параметру соответствует аргумент.