Javascript 如何编程许多不同的条件和操作

Javascript 如何编程许多不同的条件和操作,javascript,if-statement,Javascript,If Statement,我想在objectaddress中循环一级属性,并在循环中使用if语句测试特定于该属性的各种条件和操作。因此,我添加了2级条件和操作属性,试图降低if语句的复杂性。下面的代码表示我正在尝试做的事情,但不起作用。我不知道如何做到这一点 var address = { first: { value: "Joe", condition: "address[key].value.length === 0", action: "console.log(key + ' Not s

我想在object
address
中循环一级属性,并在循环中使用if语句测试特定于该属性的各种条件和操作。因此,我添加了2级
条件
操作
属性,试图降低if语句的复杂性。下面的代码表示我正在尝试做的事情,但不起作用。我不知道如何做到这一点

var address = {
  first: {
    value: "Joe",
    condition: "address[key].value.length === 0",
    action: "console.log(key + ' Not street1:' + address[key].value.length)"
  },
  last: {
    value: "Dirt",
    condition: "address[key].value.length === 0",
    action: "console.log(key + ' Not street1:' + address[key].value.length)"
  },
  street1: {
    value: "123 Blah Street",
    condition: "key === 'street1' && address[key].value.length === 0",
    action: "console.log(key + ' This is street1')"
  },
};

for (var key in address) {
  var condition = address[key].condition;
  var action = address[key].action;
  if (condition) {
    return action;
  }
}

您必须使用以下方法评估条件和操作:


不过,我不想第二次尝试避免
eval
,在可能的情况下使用实际代码。

在这些条件和操作中,您需要使用实际的JavaScript

  first: {
    value: "Joe",
    condition: function () { return address[key].value.length === 0 },
    action: function () { console.log(key + ' Not street1:' + address[key].value.length) }
  }

我不推荐
eval()
,除非您确实需要它。您的示例代码不需要它。。。但谁知道这里的实际应用是什么呢。如果确实需要eval,则必须小心执行的内容以及如何构建它。

在这种情况下,必须使用eval来执行条件变量,因为条件变量是字符串,而不是布尔值。删除引号。我个人会添加如何调用
condition
action
if(condition())
。如果有人问这类问题,那么简单地说“不要评估”可能不够明显。我从来都不理解这种反对
eval
的固执。如果这足以造成安全风险,那么您的应用程序就会有更大的问题,因为任何人都可以简单地按F12键,通过开发控制台随意注入自己的代码。@Blindy不管潜在的安全风险如何,避免
eval
在大多数情况下都会使代码更易于阅读,维护和调试。在我将函数添加到if语句后,此解决方案起作用:
if(condition()){action();}
  first: {
    value: "Joe",
    condition: function () { return address[key].value.length === 0 },
    action: function () { console.log(key + ' Not street1:' + address[key].value.length) }
  }