не совсем, но вы можете смоделировать его, проверив, передано ли значение и установив значение по умолчанию, например,
optionalArg = (typeof optionalArg == "undefined")?'defaultValue':optionalArg
Обратите внимание, что подобная методика работает, даже если опцияручный аргумент указан, но оценивается как ложный - что-то, что не подходит для такой простой идиомы, как optionalArg=optionalArg || 'default'
.
Также внутри каждой функции вы можете получить доступ к массиву, называемому arguments , который будет содержать все аргументы, переданные функции, вы можете использовать это, чтобы иметь функции со списками аргументов переменной длины.