【发布时间】:2017-12-03 19:02:53
【问题描述】:
我可以确定布尔检查的唯一结果是“真”还是“假”的明确方式是什么?换句话说,我想尽可能地排除“未定义”的可能性。两种选择是:
功能一:
private canMove = (currentOptionSelected): boolean => {
if (this.client.services) {
for (const service of this.client.services) {
if (service === currentOptionSelected) {
if (service.currentStage === 'enrolling') {
return true;
}
}
}
}
}
功能二:
private canMove = (currentOptionSelected): boolean => {
if (this.client.services) {
for (const service of this.client.services) {
if (service === currentOptionSelected) {
return service.currentStage === 'enrolling';
}
}
}
}
编辑:根据评论者的回复,更可靠的替代方法是显式返回“false”,如下所示:
private canMove = (currentOptionSelected): boolean => {
if (this.client.services) {
for (const service of this.client.services) {
if (service === currentOptionSelected) {
//You should also rethink this return statement
return service.currentStage === 'enrolling';
}
}
}
return false;
}
我会通过询问是否为“client.services”存在的情况添加额外的“return 'false'”,但“currentStage !== 'enrolling”会更好?或者在这种情况下,第二个“else”子句会是多余的吗?
其次,他写道,我应该重新考虑 return 语句在函数中的位置。替代方案是什么?简而言之,我正在尝试找到最健壮但最简洁的方法来编写此函数。
【问题讨论】:
-
第一个将返回
true或undefined,第二个将返回true、false或undefined。 -
第一个将在
service === currentOptionSelected为true时立即返回一个值,而第二个将在内部if语句为false时继续迭代剩余的元素。跨度> -
我在这里问了一个更细微的问题。在上一个问题中,我没有包括第二个选项。所以这不是同一个问题。我特别想澄清何时返回“false”作为“true”的唯一替代方案,而不是得到“true”、“false”或“undefined”。换句话说,我想避免“未定义”的可能性。
-
所有这些问题都已经得到解答。
标签: javascript function typescript boolean