【问题标题】:String to variable name without eval字符串到没有 eval 的变量名
【发布时间】:2019-11-01 09:09:09
【问题描述】:

我想知道是否有任何方法可以在不使用 eval 的情况下将字符串转换为 var 名称。

我在一个文件中声明了以下 json:

{
    "fields": {
        "usr_language": {"var": "this.$i18n.locale", "value": null},
        "token": {"var": "googleUser.getAuthResponse().id_token", "value": null}
    }
}

当我在组件内部导入时,我想访问fields.usr_language.alias

如果不使用 eval,它显然会返回字符串“this.$i18n.locale”。有什么方法可以在不使用 eval 获取变量中的值的情况下获取?在这种情况下使用 eval 是否不安全?

【问题讨论】:

  • 为什么它首先是一个字符串?
  • 这听起来是个糟糕的主意。因此,如果您的 text 与您的实际代码不匹配,您将开始收到运行时语法和/或引用错误。由于这是文本,您甚至无法使用任何广泛使用的工具来检查其正确性。
  • 我不能,不能把 var 名称放在 json 文件中
  • 没有真正的方法可以做到这一点,并且 eval 会遇到范围问题。
  • @h3rm3s 为什么不将变量作为某个对象的属性?

标签: javascript string variables eval


【解决方案1】:

您可以尝试通过动态创建函数来解决此问题,但它与 eval 具有相同的问题。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多