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。。