eval()在对象迭代时不起作用

时间:2018-09-17 19:33:45

标签: javascript internet-explorer-11

我正在尝试执行以下代码段。

var sUserID = "HELLO".toUpperCase();
                var oAlphabets = {
                    "A": 1,
                    "B": 2,
                    "C": 3,
                    "D": 4,
                    "E": 5,
                    "F": 6,
                    "G": 7,
                    "H": 8,
                    "I": 9,
                    "J": 10,
                    "K": 11,
                    "L": 12,
                    "M": 13,
                    "N": 14,
                    "O": 15,
                    "P": 16,
                    "Q": 17,
                    "R": 18,
                    "S": 19,
                    "T": 20,
                    "U": 21,
                    "V": 22,
                    "W": 23,
                    "X": 24,
                    "Y": 25,
                    "Z": 26
                };
                var iEncoded = 0, sEncoded;
                for (var i in sUserID) {
                    var sEval = "oAlphabets."+sUserID[i];
                    iEncoded = iEncoded + eval(sEval);
                }
                if(iEncoded <100){
                    sEncoded = "0"+iEncoded;
                }
                else{
                    sEncoded = ""+iEncoded;
                }

它可以在Chrome中按预期方式工作,并返回结果078。但是,它给出了错误“ Expected;”。在IE 11中。

这里的问题是什么以及如何消除它。

此致

Fahad Hamsa

1 个答案:

答案 0 :(得分:2)

使用eval的理由为零。只需使用括号符号就可以将其与变量一起使用。

iEncoded += oAlphabets[sUserID[i]];