Javascript 有没有更好的方法跳过循环中未定义的变量?

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

我正在编写一个循环,在对象中的一些节点上运行一系列函数。如果对象未定义,则应忽略它们,除非标志m.testUndefined为true,否则相反的值为true。我下面的逻辑是可行的,但我想知道是否有一种不那么罗嗦、更明确的方式来实现同样的目标

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同意,只是忘了我们可以使用!!值强制一个值为布尔值,更重要的是,在真实条件下进行操作应该更清晰。