什麼是明確的方式,我可以確定布爾檢查的唯一結果將是「true」或「false 「?換句話說,我想盡可能地排除「未定義」的可能性。兩個選項是:檢查Typescript/Javascript中的布爾值,包括「true」,「false」和「undefined」
功能的一種:
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';
}
}
}
}
編輯:當一個評論者的響應,一個更強大的替代方法是明確地返回「假」,這樣:
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;
}
我會按照詢問是否增加一個額外的「return'false'」 「client.services」存在的情況,但「currentStage!=='註冊」會更好?或者在這種情況下,第二個'其他'條款是多餘的?
其次,他寫道,我應該重新考慮它在函數中的位置。替代方案會是什麼?總之,我試圖找到編寫這個函數最健壯但最簡單的方法。
[這些JS條件語句在功能上是否等效?](https:// stackoverflow。com/questions/44830141/are-these-js-conditional-statements-functionalally-equivalent) –
第一個將返回'true'或'undefined',第二個'true','false'或'undefined'。 – RobG
一旦'service === currentOptionSelected'爲'true',第一個將返回一個值,而第二個將繼續遍歷其餘元素,如果內部if語句爲'false'。 – 4castle