很多if语句的替代品

时间:2014-02-11 20:12:39

标签: javascript

我正在编写将用于为网站创建引文的代码,而我目前正在处理的问题是,如果引文数据缺少信息,例如缺少作者或标题,该怎么办。所以,我目前实现的是一堆if语句来检查特定的引用是否缺少任何信息,基本上它看起来像:

if (citationdata.authors) {
    citation += citationdata.authors
}
else {
    citation += "Unknown author. "
} 

以及我需要针对特定​​引用类型进行的任何其他检查,最终大约是5-6个单独的if语句,直到建立完整的引用。

我对使用javascript相对较新,所以,我的问题是这是否会被视为不良做法,如果是这样,我可以使用哪些替代方案?

2 个答案:

答案 0 :(得分:9)

这个简单的东西可以简化为:

citation += citationdata.authors || "Unknown author. ";

|| operator会将左边的任何内容转换为布尔值,如果它是' truthy '值,它将返回表达式的左侧,否则它将评估并返回表达式的右侧。

' Falsey '值包括:

  • 布尔值false
  • 空字符串
  • 数字0
  • NaN
  • null
  • undefined

所有其他值均为' truthy '。

答案 1 :(得分:0)

您可以将条件检出抽象为一种方法,您可以为要检查的每个属性调用该方法。有点像...

function getCitationData(data, propName, noDataMesage) {
    if(data[propName]) {
        return data[propName];
    }
    return noDataMessage;
}


citation += getCitationData(citationdata, "authors", "Unknown author. ");