I've always found it somewhat confusing how common operations like this with identical behavior but differing syntax can have such drastic differences in speed. Another example would be `for (let i in array) { array[i]...` versus `array.forEach(...`.
For highly optimized engines like V8 and SpiderMonkey, it seems like recognizing these cases and automatically substituting in the faster behavior would be pretty low hanging fruit that could have a significant impact on existing scripts' performance.
Maybe there's some underlying reason to do with how these engines work internally that prevents such optimizations from easily being performed though.
I've always found it somewhat confusing how common operations like this with identical behavior but differing syntax can have such drastic differences in speed. Another example would be `for (let i in array) { array[i]...` versus `array.forEach(...`.
For highly optimized engines like V8 and SpiderMonkey, it seems like recognizing these cases and automatically substituting in the faster behavior would be pretty low hanging fruit that could have a significant impact on existing scripts' performance.
Maybe there's some underlying reason to do with how these engines work internally that prevents such optimizations from easily being performed though.