Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象迭代时eval()不工作_Javascript_Internet Explorer 11 - Fatal编程技术网

Javascript 对象迭代时eval()不工作

Javascript 对象迭代时eval()不工作,javascript,internet-explorer-11,Javascript,Internet Explorer 11,我正在尝试执行以下代码段 var sUserID = "HELLO".toUpperCase(); var oAlphabets = { "A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F":

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

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;
                }
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(sUserID中的变量i){
var sEval=“oAlphabets.”+sUserID[i];
Icenoded=Icenoded+评估(七个);
}

如果使用eval的理由为零,只需使用括号表示法,就像它用于变量一样

iEncoded += oAlphabets[sUserID[i]];

没有理由使用eval。括号符号就是您所需要的……正如@epascarello所说,没有理由使用
eval
,您可以只使用
var sEval=oAlphabets[sUserID[i]]
然后
iEncoded=iEncoded+sEval
小调
iEncoded
-这是匈牙利符号,表示
Encoded
是整数类型。但是当你这样做时,
iEncoded=iEncoded+eval(sEval);
它被转换成一个字符串。该代码不会产生IE11中声明的错误,也不是预期的错误。(可能是缓存了一个过时的JavaScript文件?)同意。我在IE11中尝试时得到了
“052”
。是否还有其他代码存在,比如修改
字符串。prototype
?由于技术上正确,因此可以在任何浏览器中打开任何开发人员控制台。在声明对象类型
oAlphabets['a']之后
。如果设置
oAlphabets.a=123;
那么
console.log(oAlphabets['a'])
也将返回123。JavaScript是高度动态的,有很多方法可以做同样的事情,几乎可以有效地消除错误处理。我没有考虑这种方法。顺便问一下,eval()有什么问题吗!!..奇怪的是:它在我的办公室笔记本电脑中给出了错误,但在我的个人笔记本电脑中没有。两者都有IE 11。。