【问题标题】:If statement from string statement [duplicate]来自字符串语句的 if 语句 [重复]
【发布时间】:2018-04-20 23:40:18
【问题描述】:

我想问一下是否可以使用字符串编写一个 if 语句并以某种方式将其转换为真实的语句?

我希望我可以像if(c==c) 一样使用"c==c"。 这可能吗?

var c=1;
var aa= "c==c";
if(aa) {
    console.log("abc")
}

【问题讨论】:

  • 也许是eval() 的一个用例。但是,请务必阅读使用 eval()(例如,this thread)的安全隐患。
  • 你能解释一下你的潜在问题吗? eval 被广泛贬低,有一些很好的理由。但它或它的亲属(函数构造函数)是唯一的方法来做到这一点。也许有一些更好的方法来处理您的潜在问题。
  • 你的字符串if语句的结构会像“c==c”这样吗?还是像“c!=c”这样的其他形式?
  • 如前所述,eval() 可以为您做到这一点,但几乎在每种情况下,当我们找到真正问题的根源时,我们都可以找到替代解决方案,因为eval === evil我希望我可以像 if(c==c) 一样使用“c==c” - 你为什么希望这样?
  • 这是一个简单的例子。我想做这样的事情来输入像"people[i].a". But I'm not sure if it's possible to do it with eval()`这样的JSON对象`

标签: javascript if-statement


【解决方案1】:

是的,使用Javascript的eval函数https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval

Eval 让您可以将任何字符串作为有效的 Javascript 代码运行。但是 eval 有一些缺点,例如性能和安全性,因为如果您让用户 eval 他们想要的任何字符串,这可能会导致代码中的漏洞。

【讨论】:

  • 我也可以将它用于对象吗?
  • 例如eval("people[i].a)"
  • 自己测试一下不难吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2011-10-09
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
相关资源
最近更新 更多