Javascript 重构if-else块中重复的if语句
我有一个if块,我必须在这两个块中对同一个东西进行测试:Javascript 重构if-else块中重复的if语句,javascript,Javascript,我有一个if块,我必须在这两个块中对同一个东西进行测试: if (download !== 'true') { if(index == undefined){ res.json(req.doc); }else{ res.json(index) } } else { if(index == undefined){ exports.download(res, req.doc); }else{
if (download !== 'true') {
if(index == undefined){
res.json(req.doc);
}else{
res.json(index)
}
} else {
if(index == undefined){
exports.download(res, req.doc);
}else{
res.json(index)
}
}
有没有一种方法可以重构它,这样我就不会重复同样的事情了?因为当index==undefined为false时,在两个分支中执行相同的操作,所以只需先执行该测试并反转它:
if (index != undefined) {
res.json(index);
} else if (download !== 'true') {
res.json(req.doc);
} else {
exports.download(res, req.doc);
}
旁注:
==未定义和!=undefined将以相同的方式处理undefined和null。如果不希望条件将null视为未定义,请使用===和!==。
下载是一个字符串,这有点奇怪,尽管有时确实会发生这种情况。如果下载实际上是一个布尔值,那么!='“true”将始终为true,因为没有布尔值严格等于字符串。如果是布尔值,请使用If下载或If!下载而不是===true或!==符合事实的如果是字符串,请注意开头或结尾处的空格和大写字母“true”!='“真”是真的,因为有空格;'真“!=”“真”是真的,因为大写字母T.FWIW。
因为当index==undefined为false时,在两个分支中执行相同的操作,所以只需首先执行该测试并将其反转:
if (index != undefined) {
res.json(index);
} else if (download !== 'true') {
res.json(req.doc);
} else {
exports.download(res, req.doc);
}
旁注:
==未定义和!=undefined将以相同的方式处理undefined和null。如果不希望条件将null视为未定义,请使用===和!==。
下载是一个字符串,这有点奇怪,尽管有时确实会发生这种情况。如果下载实际上是一个布尔值,那么!='“true”将始终为true,因为没有布尔值严格等于字符串。如果是布尔值,请使用If下载或If!下载而不是===true或!==符合事实的如果是字符串,请注意开头或结尾处的空格和大写字母“true”!='“真”是真的,因为有空格;'真“!=”“真”是真的,因为大写字母T.FWIW。
检查字符串。对吗?为什么下载的值是字符串?为什么在索引中使用==而不是===呢?它实际上是一个字符串,我刚刚将它命名为给定对象的索引,这就是你对照字符串检查的对象的名称。对吗?为什么下载的值是字符串?你为什么在索引上使用==而不是===呢?它实际上是一个字符串,我刚刚把它命名为给定对象的索引,这就是它的名字它对我有用,谢谢你的详细解释它对我有用,谢谢你的详细解释