2015-04-23 88 views
-5

我在我的项目中实施了强制滑块。而下面的代码工作正常:测试表达式之间的区别

else if(current - 1 === sliderLength){ 
    current = 1; 
    loc = 0 
} 

但如预期并没有工作:

else if(current === sliderLength - 1){ 
    current = 1; 
    loc = 0 
} 

那么,是什么current === sliderLength - 1current - 1 === sliderLength之间的区别?

+0

真的吗?不同的是他们*完全不同*。您正在制作并比较两种不同的数字。这是您应该在调试器或日志语句中查看的内容。 –

+0

我和克里斯,这应该是非常明显的 - 事实上写这个问题花费的时间可能比你不得不考虑它... – mfeineis

+0

严重,我不理解事实。 –

回答

1

让我们电流= 6和滑块= 5

让我们举一个例子

current - 1 === sliderLength // 5 === 5 ; true statement 

current === sliderLength - 1 // 6 ===4 ; that's a false statement 
2

我将您的变量重命名为x和y为简洁起见,仅仅包括相关部分:

if (x - 1 === y)if (x === y - 1)

如果你很难看到di fference,只是尝试它们都为x和y的一些随机值。让我们尝试x = 3y = 2

所以,第一个变为:

if (3 - 1 === 2),或if ((3 - 1) === 2),或if (2 === 2)(即true

第二个就变成了:

if (3 === 2 - 1),或if (3 === (2 - 1)),或if (3 === 1) (即false

我重要的是要注意比较操作(===)发生在减法操作之后。其实这在这种情况下并不重要,但需要注意的一点。

+0

非常有教育意义的解释。请注意,'==='不仅测试值相等,而且测试*类型*相等。这会对目前的情况产生影响吗? – mins

+0

也许在这种情况下......数值听起来像是所有整数...... –

0

试试这个:

else if(current === sliderLength + 1){ 
    current = 1; 
    loc = 0 
} 
相关问题