Другим часто используемым шаблоном для этого является использование оператора Logical OR ||
(чуть более читабельного, чем ваше троичное ИМХО):
//...
var obj = o || {};
Этот оператор вернет свой второй операнд, если первый оценивается как false
, в противном случае он вернет первый.
Безопасно использовать его, когда вы ожидаете объект, так как эти значения falsy равны null
, undefined
, NaN
, 0
, строке нулевой длины и, конечно, false
.
Я считаю полезным установить значения по умолчанию для аргументов функции, когда, конечно, любое из значений falsy ожидается действительным для функции:
function test (arg1) {
arg1 = arg1 || "default value";
//..
}