关于语法:Javascript – 如果第一个值不是真的,那么为变量分配另一个值的简洁方法

Javascript - succinct way to assign another value to variable if first value is not truthy

本问题已经有最佳答案,请猛点这里访问。

我有一个函数可以返回一个值或者返回空值,我想将它赋给一个变量。所以现在我有

1
2
3
someVar = (someFun())
  ? someFun()
  :"foo";

有没有一种更简短的方法,在这种方法中,我不需要调用函数两次,或者添加一个额外的变量,比如:

1
2
3
4
funResult = someFun();
someVar = (funResult)
  ? funResult
  :"foo";

基本上,比如:

1
someVar = someFun() |"foo"


惯用的方法是

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

如果是真的,||运算符将生成左侧表达式的值。如果没有,它将继续评估右侧,并返回其值。

对于不熟悉术语"truthy"的人,在javascript中,它意味着语言不认为是隐式false的值。隐含的false值是0NaNfalse(当然)、""nullundefined。任何对一个物体的引用,即使它是完全空的,也被认为是"真实的"。

在您的具体示例中,最好使用||方法,因为这意味着您只调用someFun()一次。