更简洁地编写多个逻辑运算符

时间:2017-10-22 05:01:12

标签: javascript logical-operators

我试图以更简洁的方式编写多个逻辑运算符。在我的情况下,我希望该函数仅在所有四个输入都只是数字时运行。我能想到这样做的唯一方法是将它们全部写在一个if语句中,并使用&&,使用多个ifs(如下所示),或者使用switch。但我想知道是否有更简洁的方式。

    function fn() {

    const input = display.getInput();

    if (input.p !== "" && !isNaN(input.p)) {

        if (input.d !== "" && !isNaN(input.d)) {

            if (input.s !== "" && !isNaN(input.s)) {

                if (input.y !== "" && !isNaN(input.y)) {

                    if (input.y <= 100) {

                        /* run code */
                    } 
                }
            }
        } 
    }    
}

1 个答案:

答案 0 :(得分:2)

要准确回答您所在地区的问题,您可以这样做:

if (input.p !== "" && !isNaN(input.p) && input.d !== "" && !isNaN(input.d) ...

但实际上你应该写得更好。首先实现验证功能:

function isValid(property) {
    return property !== "" && !isNaN(property);
}

所以if就像:

if (isValid(input.p) && isValid(input.d) && ...

最后,您可能希望将所有内容都放入新功能中:

function isEverythingValid(input) {
    for (let property of ["p", "d", "s", "y"]) {
        if (!isValid(input[property])) {
            return false;
        }
    }
    return input.y <= 100;
}