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

问题描述 投票:1回答:1

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

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.但是,它给出了错误“预期;”在IE 11中。

这里有什么问题以及如何摆脱它..

问候,

法赫德·汉莎

javascript internet-explorer-11
1个回答
2
投票

使用eval是没有理由的。只需使用括号表示法就像它与变量一起使用。

iEncoded += oAlphabets[sUserID[i]];
© www.soinside.com 2019 - 2024. All rights reserved.