При загрузке скриптов, их объекты, функции, переменные и т.д.
Попадают в область видимости вашего объекта "window"
/* подгружаемая функция main()*/
// function main(){};
typeof(main) // "undefined"
window.main // undefined
"main" in window // false
try {var a=main;} catch (e) {} // если main не инициализирован возникнет исключение
Этого достаточно.
По поводу флага, в javascript это любая переменная.
Я применил это слово условно, а не буквально(мало известной возможности).
var flagBag=!window.main; // true - если не рабочий код
/** Проверка на валидность
sVar:String - проверяемый элемент коллекции.*/
function isVar(sVar){return (sVar in window)}
/**Элементы рабочего скрипта*/
var A={};function testA(){};
/**Элементы не рабочего скрипта
var B={};function testB(){}*/
/**тест рабочего*/
isVar("A") // true
isVar("testA") // true
/**тест не рабочего*/
isVar("B") // false
isVar("testB") // false
Если скрипт не загрузится, то и функция не будет доступна, но это вы и без меня понимаете.