You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用一行代码实现不重复调用falseOrNumber()的条件返回?

解决方案

1. ES2021+ 条件语句内声明变量(推荐)

这是最优雅的一行写法,既避免重复调用函数,又不会额外污染外层作用域:

function otherFunction() {
    // ...
    if (const num = falseOrNumber()) return num;
    // ...
}

这里num的作用域仅限于if代码块内部,符合现代JS的最佳实践,代码简洁且语义清晰。

2. 逗号运算符一行写法

如果需要兼容旧版JS环境,可以用逗号运算符把变量声明和判断合并成一行:

function otherFunction() {
    // ...
    let num; if (num = falseOrNumber()) return num;
    // ...
}

这种写法本质和你提到的“显而易见的解决方案”逻辑一致,但合并成了一行,满足你对“一行代码”的要求。

3. 立即执行函数表达式(IIFE)

另一种思路是用IIFE包裹逻辑,虽然也是一行,但可读性稍弱:

function otherFunction() {
    // ...
    (num => { if (num) return num; })(falseOrNumber());
    // ...
}

这种写法不需要额外声明变量,但相比前两种,代码的直观性稍差,一般不推荐作为首选。

所有这些方案的核心都是只调用一次falseOrNumber()并缓存结果,避免了原代码中重复调用可能带来的性能问题或副作用(比如函数内部有随机逻辑、状态变更时,两次调用结果可能不一致)。

内容的提问来源于stack exchange,提问作者KorbenDose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:27:13