如何将给定JS函数改写为无if/else的单行实现?
实现思路
原函数的返回逻辑本质是纯布尔判断:只要满足「currentUser不存在」或「currentUser.getValue等于7」任意一个条件就返回false,其余场景返回true。不需要借助if/else分支语句,直接对判断条件取反后返回运算结果即可,天然支持单行写法。
转换后代码
和原函数定义形式完全对齐的单行版本:
function Menu() { return !(!currentUser || currentUser.getValue == 7) }
如果允许用ES6箭头函数,还可以写得更精简,逻辑完全一致:
const Menu = () => !!currentUser && currentUser.getValue != 7
逻辑对齐说明
以上写法和原函数行为100%匹配:
- 当currentUser不存在时,表达式判定为假,返回false
- 当currentUser存在但getValue等于7时,表达式判定为假,返回false
- 其余所有场景下,表达式判定为真,返回true
内容的提问来源于stack exchange,提问作者Yaroslav
相关产品推荐
相关产品推荐

