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

JavaScript:函数返回非真值时的变量简洁赋值(避免重复调用)

更简洁的函数返回值赋值方案

哈哈,这个需求太戳中痛点了——谁不想少写冗余代码,还避免重复调用函数呢!完全有更简洁的写法,不同编程语言里都有对应的语法糖,刚好匹配你想要的「一行搞定、只调用一次函数」的需求:

JavaScript/TypeScript

直接用空值合并运算符 ?? 就完美解决!它专门针对null或undefined场景,只有当左侧返回值是这两个值时,才会启用右侧的默认值,而且只会调用一次函数:

const someVar = someFun() ?? "foo";

如果你的场景里,除了null,还想把空字符串、0、false这类假值也替换成默认值,可以用逻辑或运算符 ||:

const someVar = someFun() || "foo";

⚠️ 注意:||会把所有假值都判定为「需要替换」,如果你的函数可能返回合法的假值(比如业务上允许返回0),就别用这个,老老实实选??更安全。

PHP

PHP里也有一模一样的空值合并运算符??,用法完全一致:

$someVar = someFun() ?? "foo";

同样只调用一次函数,仅在返回null时触发默认值。要是想处理所有假值,用简化版三元运算符?:就行:

$someVar = someFun() ?: "foo";

Python(3.8+)

Python 3.8引入的海象运算符 := 可以帮你在表达式里直接完成赋值,既不用额外变量,也只调用一次函数:

some_var = res if (res := some_fun()) is not None else "foo"

如果对假值的处理更宽松,也可以直接用or,但同样要注意假值的坑:

some_var = some_fun() or "foo"

总结下来,最推荐的是用对应语言的「空值合并类运算符」,既简洁语义又清晰,完美解决你不想重复调用函数、不想多写临时变量的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:28:10