JavaScript eval()方法的替代方法

eval() 方法用于评估或实现参数。如果参数是断言,则表达式由 eval() 评估,如果参数包含一个或多个 JavaScript 语句,eval() 将执行它们。

使用 eval(),恶意代码可以在未经你许可的情况下在你的应用程序中运行,并且第三方代码可以看到你的应用程序的范围,从而可能导致攻击。

在 JavaScript 中使用 eval() 方法的替代方法

JavaScript 是一种非常灵活的语言。在极少数情况下 eval() 是任何给定问题的正确答案,这里当然不需要。

例如,如果 s 和 k 变量是对象的一部分,你可以使用字符串下标来访问它们。因此,你可以使用变量作为下标,从而动态引用 newobj 中的任何元素。

代码:

var newobj = {s : 20, k : 30};
var value1 = 's';
var value2 = 'k';
alert( newobj[value1] + newobj[value2] );

输出:

JavaScript eval()方法的替代方法

没有必要使用 eval() 方法。你可以用任何你想要的方式构造 value 字符串,给你几乎无限的灵活性。

如果 s 和 k 变量是全局变量,你可以使用这种技术,因为 JS 全局变量是浏览器中窗口对象的子对象。

具体来说,你的全局变量可以通过 window.s 或 window['s'] 访问,后者允许你执行与上述相同的 dynamicProperty 技巧。