Javascript 如何编程许多不同的条件和操作
我想在objectJavascript 如何编程许多不同的条件和操作,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
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) }
}