最近,我在Javascript中看到了这样的if / else块 - 虽然同样的问题可以应用于任何命令式语言
if (cond) {
....
} else if (!cond) {
....
}
问题:if (!cond)
之后else
的目的是什么?如果没有其他可能性,我为什么不单独使用else
?
我的观点是if (!cond)
是多余的,应该被删除,我正在寻找文档的指针来证实这一点。
答案 0 :(得分:4)
假设这两个条件是相同的(除了否定之外),那就好像(在我个人看来)编写得不好的代码。
答案 1 :(得分:1)
代码仍然不好,但也许不是那么无意义:
var a = 1;
if(--a){
el.innerHTML = 'here ' + a;
}else if(!(--a)){
el.innerHTML += ', there ' + a;
}
显然没有el.innerHTML被执行。重点是,除了可读性之外,逻辑上结构根本不是多余的。
答案 2 :(得分:1)
有一个边缘情况,这与if else不同,那就是条件正在做某事。但这不是理由,因为它导致难以阅读代码。
var silly = true;
function test() {
silly = !silly;
return silly;
}
if (test()) {
console.log(silly);
} else if (!test()) {
console.log(silly);
} else {
console.log('silly')
}
答案 3 :(得分:0)
以这种方式使用else if
;它本质上是这样的:
if (cond)
{
....
}
else
{
if (!cond)
{
....
}
}
所以是的,完全没有意义
答案 4 :(得分:0)
我建议:
正如你所说,如果声明中没有其他选项那么就没有指向它
答案 5 :(得分:0)
块
if (cond) {
....
} else if (!cond) {
....
}
表示与
完全相同if (cond) {
....
} else {
....
}
编写您看到的代码的人,很可能在if中有更多条件,只需在调试时将其更改为else if(!cond)
,而不是将其注释掉并添加else
部分。