Javascript 有没有更好的方法跳过循环中未定义的变量?
我正在编写一个循环,在对象中的一些节点上运行一系列函数。如果对象未定义,则应忽略它们,除非标志m.testUndefined为true,否则相反的值为true。我下面的逻辑是可行的,但我想知道是否有一种不那么罗嗦、更明确的方式来实现同样的目标Javascript 有没有更好的方法跳过循环中未定义的变量?,javascript,logic,Javascript,Logic,我正在编写一个循环,在对象中的一些节点上运行一系列函数。如果对象未定义,则应忽略它们,除非标志m.testUndefined为true,否则相反的值为true。我下面的逻辑是可行的,但我想知道是否有一种不那么罗嗦、更明确的方式来实现同样的目标 for (var i = tests.length - 1; i >= 0; i--) { var m = tests[i], subject = m.subject(raw), //get
for (var i = tests.length - 1; i >= 0; i--) {
var m = tests[i],
subject = m.subject(raw), //get the right raw data
isUndefined = typeof subject === 'undefined';
if(m.testUndefined && !isUndefined){ //Flag for skipping defined subjects
continue;
}else if(!m.testUndefined && isUndefined){ //Skip all other undefined subjects.
continue;
}
if( m.test(subject, m.params) ){
m.tag(item.tags); //add tags if test success
}
}
ifm.testUndefined!==isUndefined{continue;}如果m.testUndefined始终有值,并且只能为true或false。它通常为true或undefined。对于跳过的如此小的块,If.更清楚!!m、 testUndefined===isUndefined&&m.testsubject,m.params{m.tagitem.tags;}强制将m.testUndefined设置为boolean by!!m、 testUndefined…@JaromandaX同意,只是忘了我们可以使用!!值强制一个值为布尔值,更重要的是,在真实条件下进行操作应该更清晰。