我如何从索引中减去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。

09-27 21:06