eval功能的目的是什么?

时间:2012-06-04 14:34:08

标签: javascript

我知道这个函数获取一串有效的JavaScript表达式或语句并评估表达式或执行语句,但为什么我们需要将代码传递给函数执行而不是简单地在脚本中编写代码?

3 个答案:

答案 0 :(得分:2)

有时代码是动态构造的,或者类似于JSON需要在当前上下文中进行评估等。这样做不一定是好的,或者是必要的 - 不同的讨论。

答案 1 :(得分:2)

这取决于您需要创建动态变量甚至解析json数据的情况。无论如何,强烈建议使用 NOT

请参阅:

了解更多解释

要避免它,请参阅;

答案 2 :(得分:1)

假设您有函数:makeCheckbox()makeRadio()makeSelect()(理论上)。您想通过用户的活动调用函数(例如菜单单击)。您可以使用ifelse if等来制作switch,但您也可以eval制作类似的内容:

eval('make'+userChoose.charAt(0).toUpperCase()+string.slice(1)+'()');

其中userChoose是其中一个选项:radiocheckboxselect,首先是first-char-uppercased,然后与make连接(之前)和()(之后),最后调用其中一个函数。

这不是一个好习惯,因为在大型项目中,你不能简单地找到要运行的呼叫,因为它们“隐藏在”eval后面,但有时这是唯一的方法。