Categories
Javascript

eval() is evil: window to the rescue

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?

Kevin Henrikson

Kevin Henrikson

Kevin has spent his career making annoying but important things work better at scale: enterprise email at Zimbra, mobile productivity (co-founded Acompli, acquired by Microsoft for $200M and became Outlook Mobile), marketplace operations at Instacart, and now healthcare administration as Co-Founder of Pretty Good AI.

Subscribe to my newsletter - Founder Mode