转变成if/else语句
问题描述:
不知何故这不起作用:转变成if/else语句
if(direction != 'leftnav') direction = 'leftnav';
if(direction == 'leftnav') direction = 'rightie';
这永远是作为“rightie”
我倾向于认为这是因为他们那种覆盖。这可以用if语句来完成吗? 谢谢:)
答
!==
和===
是strict equality checks。
你可能只是想!=
,如下所示:
if (direction != 'leftnav') {
direction = 'leftnav';
}
else {
direction = 'rightie';
}
或为这些简单的任务更重要的是,使用ternary operator:
direction = direction == 'leftnav' ? 'rightie' : 'leftnav';
答
想想你所要求的逻辑:
如果不是leftnav,那就把它做成leftnav。
[下一个陈述 - 它已被重新分配后]
如果它是leftnav,使它正确。
您正在寻找
if(direction !== 'leftnav') direction = 'leftnav';
else if(direction == 'leftnav') direction = 'rightie'; // can just be "else"
答
当然,他们覆盖,看你在做什么有:
if(direction !== 'leftnav') direction = 'leftnav';
if(direction == 'leftnav') direction = 'rightie';
第一个语句设置direction
为“leftnav”如果它是什么其他。所以当你第二条语句时,direction
将永远是'leftnav'。第二个意思是说else if
而不是if
?
+0
你可以用'else'而不是'else if'作为第二个。 – 2011-04-07 02:38:22
!==不是问题,但如果其他人修好了!非常感谢:) – cmplieger 2011-04-07 02:35:33
我会尽快接受答案:) – cmplieger 2011-04-07 02:36:21
这是因为如果你通过第一个if语句,你更新了代码集的'方向'两次。也就是说,如果'direction = 5',第一个'if'设置'direction ='leftnav''。然后你会通过第二个'if',把它设置为'rightie'。对于这样的情况,你应该真的使用'if/else'块。 – 2011-04-07 02:52:28