首页 > 解决方案 > 三元运算符如何调用函数?

问题描述

给定以下代码:

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 吗?它怎么知道调用这个函数?

标签: javascriptconditional-operator

解决方案


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

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';

大多数人甚至会说它应该使用几个变量来提高可读性。


推荐阅读