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
相关产品推荐
相关产品推荐

