我一直在我的代码中使用eval,最近我发现可能存在严重的安全问题如果在Javascript中使用了eval().最常见的情况是我使用eval()来组成变量名,然后像这里获取该变量的值;
var a = "2" // could be any value
work(a);
function work(a)
{
var l1 = "something";
var l2 = "something else";
var l3 = "something different";
alert(eval("l"+a));
// alerts "something else"
};
Run Code Online (Sandbox Code Playgroud)
在这样的情况下,有没有替代eval()?
我已经尝试使用窗口["l"+ a],但只有在变量是全局变量且document.getElementById("l"+ a)并且不起作用时才会起作用.
任何帮助非常感谢.
谢谢,诺曼.
也许使用对象或数组:
var obj = {
'1' : 'something',
'2' : 'something else',
'foo' : 'entirely different'
};
// access like this:
obj[1]; // "something"
obj['foo']; // "entirely different"
var key = 'foo';
obj[key]; // "entirely different"
Run Code Online (Sandbox Code Playgroud)
或者,作为一个数组:
var arr = [
"something",
"something else",
"something different"
];
arr[0] // something
arr[1] // something else
Run Code Online (Sandbox Code Playgroud)