2012-06-04 51 views
0

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

+0

例如,在浏览器中使用json没有json对象。或者用于计算一些输入。 –

+0

看看这个:http://stackoverflow.com/questions/86513/why-is-using-the-javascript-eval-function-a-bad-idea –

+1

http://stackoverflow.com/可能的重复问题/ 1594023 /什么,是最打算用-的-EVAL-中的JavaScript –

回答

1

比方说,你具备的功能:makeCheckbox()makeRadio()makeSelect()(理论上)。你想通过用户的活动调用函数(例如菜单点击)。你可以用ifelse if等做到,就可以使switch,但你可以eval也做出类似:

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

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

这不是很好的做法,因为在大型项目中,你不能简单地找到调用功能,因为它们“隐藏”在eval之后,但有时它是唯一的方法。

2

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