三元操作符如何调用函数?



给出如下代码:

const letters = ['a', 'b', 'c'];
foo = ((list, letter) => {
    if (list.includes(letter)) {
        return true;
    }
    return false;
})(letters, 'c') ? 'letter in list' : 'letter not in list';
console.log(foo);

输出将是:

letter in list

在这个例子中三元运算符是如何工作的?它是否以lettersc作为参数调用foo ?它怎么知道调用这个函数呢?

您可以将表达式分成几个部分,并分别查看它们:

foo = (
    (
        // Create an arrow function
        (list, letter) => {
            if (list.includes(letter)) {
                return true;
            }
            return false;
        }
    )
    // call the function
    (letters, 'c')
) /* ternary operator on call result */ ? 'letter in list' : 'letter not in list';

如果你不确定,你通常可以用变量代替表达式来使它更清楚:

const func = (list, letter) => {
    if (list.includes(letter)) {
        return true;
    }
    return false;
};
const callResult = func(letters, 'c');
const foo = callResult ? 'letter in list' : 'letter not in list';

大多数人甚至会说,为了可读性,应该使用几个变量

最新更新