JSFiddle - React, Tailwind, and code Playground

JavaScript

function isDefined(strExp) {
    var exp = strExp.split('.');
    if (!/^[a-z][a-z0-9_]+$/i.test(exp[0])) { 
        console.log('failed 1');
        return false; 
    };
    var obj;
    try { obj = eval(exp[0]); } catch(ex) { 
        return false; 
    }
    var typeOfObj = typeof obj;
    if (typeOfObj === 'undefined' || obj === null) {
        return false;
    }
    for(var i = 1; i < exp.length; i++) {
        obj = obj[exp[i]];
        typeOfObj = typeof obj;
        if (typeOfObj === 'undefined' || obj === null) {
            return false;
        }
    }
    return true;
}

var abc = { testing: { thisthing : null } };

console.log(isDefined('window.document'));
console.log(isDefined('abc.testing.thisthing'));