javascript - 三元运算符如何调用函数?
问题描述
给定以下代码:
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';
大多数人甚至会说它应该使用几个变量来提高可读性。
推荐阅读
- r - Group_by,并创建具有持续时间的新列
- xero-api - 我可以用 Xero OAuth2 身份验证的子域覆盖回调 url
- regex - 正则表达式提取字符之间的字符串并排除字符 Angular Typescript
- html - 2个Dorpdown菜单同时打开
- r - 基于不大于和不小于R中的过滤器或子集
- javascript - ReactJS - componentDidUpdate() 处的 axios 请求
- java - @Autowired bean 在静态方法中为 null
- go - 使用 Go 从 csv 数据框的列创建文本文件
- php - php 5.3版本如何实现PHP Facebook登录?
- javascript - 如何将变量转换为特定类型以说服打字稿无处不在?