In JavaScript eval() has long known to be evil. Take for example:
function foo(){} foo["str1"] = "aaaa"; foo["str2"] = "bbbb"; foo["str3"] = "ccccc";
Elsewhere you need to lookup items from this structure. Where both “foo” and “str1” are pass in as arguments. So like:
function lookUp(bundle, str) { return eval(bundle[str]); }
eval() will invoke a new scope and new compiler just to find and evaluate the string values. There must be a better way. Since foo is defined previously it’s available via the window object. So you can simply say:
function lookUp2(bundle, str) { return window[bundle][str]; }
Pretty simple eh?