【问题标题】:what's the purpose of eval function?eval 函数的目的是什么?
【发布时间】:2012-06-08 15:09:06
【问题描述】:

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

【问题讨论】:

标签: 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 数据的情况。无论如何,强烈建议不要使用它。

    更多解释见:

    要避免它,请参阅;

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-17
        • 2010-12-08
        • 2017-02-10
        • 2012-01-14
        • 2013-05-22
        • 1970-01-01
        • 2020-04-02
        • 2021-06-09
        相关资源
        最近更新 更多