Javascript eval ReferenceError: is not defined

user3577459 picture user3577459 · Jun 2, 2014 · Viewed 23k times · Source

I need to dynamical create a variable off the value of a variable from an argument I am pulling in from a script. But I first want to check if it already exists so I don't overwrite it, if it is already set.

I am leveraging eval to expand the value of the variable and tag it onto a variable suffix but no matter what I use to check for the undefined I am getting a reference error on the check.

Below is the simple code snippet

chkUser = args[1];

if(typeof eval(chkUser+"lastseen")==="undefined") ;

I've also tried put the eval in parens and putting undefined in ' ' and pulled them completely and switching typeof to the JavaScript standard undefined as such

if( eval(chkUser+"lastseen")=== undefined) ;

but I always get ReferenceError: robertlastseen is not defined or what ever chkUser expands out to.

Answer

Nano picture Nano · Jun 2, 2014

Its just a gues, but it seems like the Variable is just not defined before you eval it.

try this Fiddle.

It works fine for me.

Try to hardcode the variable before you eval it like this:

chkUser = args[1];
var robertlastseen = 'Hardcode';
console.log(eval(chkUser+"lastseen"));

Then you shoud be able to debug your code.

if you just want to test if this Variable is declared try this:

if(eval('typeof ' + chkUser + 'lastseen') === "undefined"){
    //Variable undefined
}