如何从索引中减去1(或任何数字)而不递减它(如果变量中的值没有变化)?
以下是我的代码片段:
if (i > 0 & areaImages[i].id == areaImages[i-1].id)
我从Firebug收到此错误消息:
TypeError: areaImages[i - 1] is undefined
答案 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。