Вопрос
Каков хороший способ присвоить значение по умолчанию необязательному параметру?
Фон
Я играю с дополнительными параметрами в JavaScript и идею присвоить значение по умолчанию, если параметр не указан. Мой метод, о котором идет речь, принимает два параметра, последний из которых я считаю необязательным, а если неопределенный, должен иметь значение false
. Мой метод выглядит примерно так:
// selects the item, appropriately updating any siblings
// item to select [, toggle on / off]
this.selectItem = function(item, toggle)
{
toggle = toggle && typeof toggle === 'boolean';
if (toggle)
{
// ...
}
}
Тестирование
После запуска нескольких тестов на этот jsFiddle, используя следующую директиву для присвоения значения по умолчанию:
function checkParamIsBoolean(param)
{
param = param && typeof param === 'boolean';
}
checkParamIsBoolean('me'); // boolean
checkParamIsBoolean([]); // boolean
checkParamIsBoolean(true); // boolean
checkParamIsBoolean(false); // boolean
checkParamIsBoolean(1 == 1); // boolean
checkParamIsBoolean(1); // boolean
checkParamIsBoolean(null); // object
checkParamIsBoolean(undefined); // undefined
Как вы можете, результаты меняются и не желательны.
Ожидаемые
null
= false
undefined
= false
Фактические
null
= object
undefined
= undefined
Резюме
Существуют ли альтернативные подходы к присвоению значения по умолчанию необязательному параметру, если он не указан; было бы лучше использовать _toggle
в качестве параметра, а затем назначить значение var toggle
внутри метода?