【发布时间】:2014-06-02 19:00:21
【问题描述】:
我需要从我从脚本中提取的参数中动态创建一个变量的值。但我首先要检查它是否已经存在,所以如果它已经设置,我不会覆盖它。
我正在利用 eval 扩展变量的值并将其标记到变量后缀上,但无论我使用什么来检查未定义的内容,我都会在检查时遇到参考错误。
下面是简单的代码sn-p
chkUser = args[1];
if(typeof eval(chkUser+"lastseen")==="undefined") ;
我也试过把 eval 放在括号里,把 undefined 放在 ' ' 里,然后把它们完全拉出来,然后把 typeof 切换到 JavaScript 标准 undefined
if( eval(chkUser+"lastseen")=== undefined) ;
但我总是得到 ReferenceError: robertlastseen is not defined 或者 chkUser 扩展到什么。
【问题讨论】:
-
运行
typeof调用insideeval()。if(eval('typeof '+chkUser+'lastseen') === "undefined") -
您是否考虑将这些存储为
Object的属性而不是单独的变量? Bracket notation 通常比eval()简单,并且不会抛出 ReferenceErrors。或者,传递一个用户对象而不是变量前缀作为args[1]--if (typeof args[1].lastseen === 'undefined')。 -
I need to dynamical create a variable off the value of a variable- 为什么? -
if (window[args[1]+"lastseen"]) ...
标签: javascript eval referenceerror