我如何从索引中减去1(或任何数字)而不递减(变量中的值不变)?
这是我的代码片段:
if (i > 0 & areaImages[i].id == areaImages[i-1].id)
我从Firebug收到此错误消息:
TypeError: areaImages[i - 1] is undefined
最佳答案
什么都不减。实际原因是您使用了错误的运算符。
if (i > 0 && areaImages[i].id == areaImages[i-1].id)
// ^^
对于布尔值,
&
和&&
都将返回相同的结果(最多为==
)。但是关键的区别在于&&
是short-circuiting,即,当&&
的左侧是false
时,将不评估右侧。原始代码的问题是
&
不会短路,因此即使areaImages[i-1].id
也会评估i <= 0
。但是i-1
是无效的索引,因此areaImages[i-1]
是未定义的,并且您无法从未定义获取属性,从而导致TypeError。