如何在JavaScript中不使用if和三元运算符,实现a为falsy时将b赋值给result
可行实现思路
核心方案1(适配常规需求:a为truthy时result取a,a为falsy时取b)
利用JavaScript逻辑或||的短路特性实现:
- 原理:
||运算符会从左到右判断操作数的布尔值,遇到第一个truthy值直接返回该值,若所有左侧值都是falsy则返回最后一个操作数,完全符合题目要求,无需使用if或三元运算符。
实现代码:
function run(a, b) { let result result = a || b return result } // 也可以简化写法,省略result变量 function run(a, b) { return a || b }
核心方案2(适配特殊需求:a为truthy时result为undefined,仅falsy时赋值b)
利用逻辑与&&的短路特性实现:
- 原理:
&&运算符遇到第一个falsy值直接返回该值,仅当左侧为truthy时才返回右侧值。对a取反后判断,刚好满足a为falsy时返回b,a为truthy时返回undefined。
实现代码:
function run(a, b) { let result result = !a && b return result }
注意事项
- 注意区分
||和空值合并运算符??的差异:??仅判断null/undefined两类空值,不会把0、''、false等常规falsy值视为假值,如果题目要求的falsy包含上述值,不要用??实现。 - JavaScript标准falsy值列表:
false、0、-0、0n、空字符串''、null、undefined、NaN,以上值都会触发赋值b的逻辑。
内容的提问来源于stack exchange,提问作者nguyencuc2486
相关产品推荐
相关产品推荐

