如何从JavaScript中的上一个索引号中减去1

时间:2012-11-08 20:33:42

标签: javascript indexing

如何从索引中减去1(或任何数字)而不递减它(如果变量中的值没有变化)?

以下是我的代码片段:

if (i > 0 & areaImages[i].id == areaImages[i-1].id)

我从Firebug收到此错误消息:

TypeError: areaImages[i - 1] is undefined

1 个答案:

答案 0 :(得分:8)

什么都没有减少。实际的原因是你使用了错误的操作符。

if (i > 0 && areaImages[i].id == areaImages[i-1].id)
//        ^^

对于布尔值,&&&都会返回相同的结果(最多==)。但关键的区别在于&&short-circuiting,即当&&的左侧是false时,则不会评估右侧。

原始代码的问题是& 短路,因此即使areaImages[i-1].id也会评估i <= 0。但是i-1是一个无效索引,因此areaImages[i-1]未定义,并且您无法从undefined获取属性,从而导致TypeError。