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

Cha*_*tay 0 javascript indexing

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

这是我的代码片段:

if (i > 0 & areaImages[i].id == areaImages[i-1].id)
Run Code Online (Sandbox Code Playgroud)

我从Firebug收到此错误消息:

TypeError: areaImages[i - 1] is undefined
Run Code Online (Sandbox Code Playgroud)

ken*_*ytm 8

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

if (i > 0 && areaImages[i].id == areaImages[i-1].id)
//        ^^
Run Code Online (Sandbox Code Playgroud)

对于布尔值,都&&&将返回相同的(高达==)的结果.但关键的区别在于,&&短路,即当左手侧的&&IS false,然后右手边将不会进行评估.

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