在Javascript中使用动态变量时出错

在Javascript中使用动态变量时出错,javascript,Javascript,在HTML中,我这样声明,我从DB中获取动态变量列表 eval('var ' + result.Symbols + ';')// result.Symbols will have S1,S2,S3,S4,S5 到目前为止,它运行良好 在.js中,我尝试使用这个 eval(calRulelist[i].RuleReference) == calRulelist[i].RuleValue 此处calRulelist[i]。规则参考在评估时为S1,它将给出O/p“5”,并与calRulelist

在HTML中,我这样声明,我从DB中获取动态变量列表

eval('var ' + result.Symbols + ';')// result.Symbols will have S1,S2,S3,S4,S5
到目前为止,它运行良好

在.js中,我尝试使用这个

eval(calRulelist[i].RuleReference) == calRulelist[i].RuleValue 
此处
calRulelist[i]。规则参考
在评估时为S1,它将给出O/p“5”,并与
calRulelist[i]进行比较。规则值

这里是抛出错误S1未定义


如果我像变量S1、S2、S3、S4、S5一样正常声明;工作正常。

为什么在此处需要eval“eval(calRulelist[i].RuleReference)==calRulelist[i].RuleValue”?为什么首先要使用eval?使用JSON(假设数据来自后端代码)在页面上存储数据,然后使用Javascript解析所述JSON,这样做可能会更好。但我认为你的问题是由于JS解释eval语句的顺序。不确定你的代码是如何工作的,但你的第一行声明变量,但没有任何值。即使没有eval()
var S1将使S1未定义。如果(eval(calRulelist[i].RuleReference)==calRulelist[i].RuleValue){//满足规则}@gillesc很好地说明了这一点,那么无论您做什么,它都将是未定义的,因为变量是。。。好未定义!