给出如下代码:
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
在这个例子中三元运算符是如何工作的?它是否以letters
和c
作为参数调用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';
大多数人甚至会说,为了可读性,应该使用几个变量