Оба варианта опасны, если их применять, не подумав. Во многих языках условие проверяет аргумент не только на «неопределённость», но и на равенство числу 0, пустой строке или даже строке «0». Я бы писал медленно, но верно:
if(argument == undefined) argument = "value";
Иногда подобную конструкцию оборачивают в простенькую функцию:
function default(val, defval) {
return val == undefined?defval:val;
}
...
argument = default(argument, "value");
Такая функция, к примеру, встроена в скриптовый язык AviSynth. В Java у класса Properties (надстройка над хэш-таблицей) есть метод getProperty(key, defValue) (вернёт defValue, если в таблице отсутствует запись с ключом key).