Footgunned by range(-1)

Today I ran into some React code:

range(count).map((i) => <Component key={i} />)

Problem: Sometimes <Component> renders when it’s not supposed to.

Why?

Because when count equals a negative number, range() returns a non-empty array.

range(-3) = [0,-1,-2]
range(-2) = [0,-1]
range(-1) = [0]
 range(0) = []
 range(1) = [0]
 range(2) = [0,1]
 range(3) = [0,1,2]

References