Из вариантов создания локального контекста по условию
namespace.property || new function () {
…
};
//или
if (!namespace.property) {
(function () {
…
}());
}
//или
(function () {
if (!namespace.property) {
…
}
}());
//или
(function () {
if (!namespace.property) {
return false;
}
…
return true;
}());
я выбрал для себя первый
а это
(function () { /*test case*/ }()) || new function () {
…
};
уже уже вытекающее
я бы конечно написал бы
new function () { /*test case*/ } || new function () {
…
};
но примитивное значение из конструктора вернуть нельзя, для него автоматически выполнится Object(value), которое будет всегда true